【黑马程序员】C语言结构体

原创 2015年11月17日 16:41:29

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


一、c语言中构造类型


构造类型:构造数据类型是根据以定义的一个或多个数据类型用构造的方法来定义的。


二、什么是结构体


结构是一种构造类型,它是由若干成员组成的。每一个成员可以是一个基本数据类型或者是一个构造类型。


三、为什么要构造类型


结构体可以把功能相同的数据组织起来,存在一起,用的时候方便,而且在调用函数的时候,若传递参数较多,传一个结构体相对简单一些,很多系统自带的函数必须用结构体。


四、定义结构体的方法


一般形式为: struct 结构名{


成员列表;

};


*注意:结构体在定义完成后,计算机不会给结构体分配内存空间

会在定义结构体变量后,分配存储空间



五、结构体变量中中成员的访问方法


结构体变量名.成员名


六、结构数组的概念

结构数组的每一个元素都是具有相同结构类型的下标的结构变量。


定义格式:

struct 结构名{


成员列表

}数组名[数组长度];


<span style="font-size:14px;">//
//  main.c
//  利用stu结构体,计算学生平均成绩和不及格的人数,打印80-100分学生的成绩姓名
//
//  Created by Brisinga on 15/11/16.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>

struct stu{
    
    int num;
    char *name;
    char sex;
    float score;
    
};
int main(int argc, const char * argv[]) {
    
    struct stu boy[5]={{101,"Li ping",'F',45},
                       {102,"Zhang ping",'M',62.5},
                       {103,"He fang",'F',92.5},
                       {104,"Wang ming",'M',58}};
    
    int count = 0;  //定义一个变量用来存储不及格的人数
    float avScore = 0.0f; //定义一个变量用来存储平均成绩
    for (int i=0; i<sizeof(boy)/sizeof(struct stu); i++) {
        if (boy[i].score<60) {
            count++;        //统计不及格人数的个数
        }else if(boy[i].score>=80){
            printf("%s\t",boy[i].name);  //打印大于80的姓名
        }
        avScore +=boy[i].score;     //累加所有学生的成绩
    }
    printf("平均成绩为:%.2f\n",avScore/5);      //打印平均成绩
    return 0;
}
</span>

七、结构体指针定义和初始化

1.指向结构体变量的指针

结构指针变量中的值是所指向的结构体变量的首地址。


一般形式为:

struct 结构名  *结构体指针变量名


2.结构体指针简介访问变量的值


一般形式为:

(*结构指针变量).成员名


或为: 结构指针变量->成员名


八、结构体嵌套使用


1)成员也可以是一个结构体,即构成了嵌套的结构

2)不可以嵌套自己这个类型的变量


<span style="font-size:14px;">//
//  main.c
//  结构体嵌套自己
//
//  Created by Brisinga on 15/11/16.
//  Copyright © 2015年 yan. All rights reserved.
//

#include <stdio.h>
//定义一个结构体
struct Person{

    char *name;
    int age;
    struct Person *child;
};
int main(int argc, const char * argv[]) {
    //创建子结构体
    struct Person kim = {"kim",8,NULL};
    struct Person p = {"林志颖",38,&kim};
    //输出结构体信息
    printf("%s的儿子%s的年龄为:%d\n",p.name,p.child->name,p.child->age);
    return 0;
}
</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。

【黑马程序员】C语言学习笔记之结构体(十二)

--------------------------------------------IOS期待与您交流!-------------------------------------------- 一...
  • kqygww
  • kqygww
  • 2014年03月17日 09:34
  • 1128

黑马程序员——C语言基础之结构体

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、C语言构造类型 构造数据类型:根据已定义一个或多个数据类型用构造的方法来定义的。 一个构...

黑马程序员———C语言 结构体

------- Java培训、Android培训、iOS培训、.Net培训 、期待与您交流 --------
  • zxjqaz
  • zxjqaz
  • 2015年11月02日 16:28
  • 111

黑马程序员 ----C语言 结构体

-----培训学习型博客 请多指教, 1、定义一个结构体需要注意的东西   1.struct + 结构体名struct 关键字一定不能省   2.成员变量要写在{}中   ...
  • wesleyq
  • wesleyq
  • 2015年09月19日 23:45
  • 155

黑马程序员-ios学习笔记 c语言 结构体

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------   构造类型定义: 由一个或者多个已定义类型的元素用构造的方法,构造新的类型   构造类型分...

黑马程序员——C语言热身——预处理指令、变量类型、static和extern、结构体、枚举

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! —— 预处理指令 预处理指令简介 C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使...

黑马程序员_C语言结构体

iOS,Android,Java培训,期待与您的交流 在实际应用中,某个对象由不同类型的数据组成,比如学生的姓名为字符串型,学号可为整形或者字符串型,性别为枚举类型,身高为浮点型。很显然,不可能用一个...

黑马程序员——C语言基础---结构体、枚举

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-第一讲 结构体的概念和定义 我们可以将描述某个事物的一组变量定义为结构体。和数组类似,结构体也是集合变量,不同...

黑马程序员——C语言基础---结构体1

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------                      第一讲    构造类型及结构体  1、C语言构造类型 ...

黑马程序员--ios基础--c语言--结构体、枚举

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------  一.结构体的定义及简单使用 数组:职能由多个相同类型的数据构成结构体:可以由多个不...
  • yuanptt
  • yuanptt
  • 2015年05月17日 21:45
  • 269
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:【黑马程序员】C语言结构体
举报原因:
原因补充:

(最多只允许输入30个字)