关闭

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

标签: c语言结构体
161人阅读 评论(0) 收藏 举报
分类:

------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>


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:5833次
    • 积分:260
    • 等级:
    • 排名:千里之外
    • 原创:21篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档