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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值