【好程序员笔记分享】—— C语言中的结构体

来源:互联网 发布:批量链接下载软件 编辑:程序博客网 时间:2024/06/05 15:07

C语言中可以通过数组来表示每一个元素都是相同类型的数据,但当我们遇到元素之间是不同数据类型的整体刚怎么办呢?这个时候,我们就要用到结构体了。下面我们来看一个结构体的例子。代码如下:

#include <stdio.h>struct Studer{    char *name;//C语言中没有字符串类型,定义字符串用字符指针或字符数组实现    int number;    char class[20];};int main(int argc, const char * argv[]) {    //定义一个结构体,结构体中还可以除递归定义自己以外的其他结构体    struct People {        char *sex;        int age;        float height;        struct Studer stu;    } peo = {"男",10,1.4f,{"小明",23,"三年级一班"}};        printf("修改前%s的年龄是%d岁\n",peo.stu.name,peo.age);        peo.age=11;    printf("修改后小明的年龄是%d岁\n",peo.age);    //定义一个结构体数组    struct People a[2] = {{"男",10,1.4f,{"小军",25,"三年级一班"}},{"女",10,1.4f,{"小红",24,"三年级一班"}}};        printf("修改前%s的学号是%d号\n",a[0].stu.name,a[0].stu.number);        a[0].stu.number=10;        printf("修改后%s的学号是%d号\n",a[0].stu.name,a[0].stu.number);        //定义一个结构体指针    struct People *p = &peo;        printf("修改前%s的身高是%.1f米\n",(*p).stu.name,(*p).height);        (*p).height=1.45f;        printf("修改后%s的身高是%.2f米\n",(*p).stu.name,(*p).height);        //定义一个指向数组的结构体指针    struct People *q = &a[0];    printf("修改前小军的名字是%s,他的身高是%.2f米\n",(*q).stu.name,(*q).height);    (*q).stu.name="晓军";        (*q).height=1.65f;        printf("修改后小军的名字是%s,他的身高是%.2f米\n",(*q).stu.name,(*q).height);        return 0;}

输出结果如下:

修改前小明的年龄是10岁修改后小明的年龄是11岁修改前小军的学号是25号修改后小军的学号是10号修改前小明的身高是1.4米修改后小明的身高是1.45米修改前小军的名字是小军,他的身高是1.40米修改后小军的名字是晓军,他的身高是1.65米

上面代码中有结构体的定义,也有包含结构体的结构体定义,还有结构体数组的定义和结构体指针的定义,甚至还有指向数组的结构体指针。一般对结构体变量的操作是以成员为单位进行的,一般形式:结构体变量名.成员名。结构体数组中也可以用数组下标访问每一个元素,就跟普通数组的用法一样,本例中的 a[0].stu.number就是其中的一种使用。结构体的指针也是跟我们普通指针的用法类似。

好了,今天就学习这么多,我们好好将这个例子理解并融汇贯通。

0 0
原创粉丝点击