结构体

一、结构体的使用

1.为什么使用结构体

常见的变量类型,如int float 等,只能储存一个变量。
而数组虽然可以储存多个变量,但是变量的类型却是相同的。
那么如何定义一个变量类型,使它可以储存多个不同类型的变量呢?有一种方法就是使用结构体。

2.结构体的使用方法

#include <stdio.h>
struct student{
       char *name;
       int age;
       long number;
   };
int main(int argc, const char * argv[]) {
    struct student mingming={"xiaoming",18,20190911};
    printf("%s %d %ld",mingming.name,mingming.age,mingming.number);
    return 0;
}

注意:
1.在定义结构体的时候,结构体的最后要用分号
2.结构体定义时,并不占内存,因此也不能赋值。

二、两种方法使用结构体中的内容

1.“.”使用点(如上一个例子中那样)

2.利用指针

#include <stdio.h>
struct student{
    char *name;
    int age;
    long num;
};
int main(int argc, const char * argv[]) {
    struct student lihua={"lihua",18,222019806044053};
    struct student *p=&lihua;
    p->age=33;
    printf("%d\n",p->age);
    printf("%ld",lihua.num);

三、结构体的大小

在这里插入图片描述
一个char为8,一个int为4,一个long为8.那么student的大小,不应该是20吗?怎么程序运行结果为24呢?
那是因为,struct的大小有两个特点:
1.struct中,小类型的存储空间大小会像大类型转化。
2.小类型转化时,若可以拼接成一个大类型的空间,那么他们会优先拼接起来转化
比如像这样:在这里插入图片描述
long的大小是8,原本int 应该转化为8,但是由于两个int正好为8,所以他们就拼在一起,总大小为8.
再比如:在这里插入图片描述
char+float小于8(int
),所以两个拼接起来,占8,总共为16.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值