C语言:初识结构体

结构体:

结构体是一些值的集合,这些值称为成员变量,结构体的每个成员可以是不同类型的变量

 

结构体的声明

struct  tag                          //struct 结构体关键字    tag 结构体标签   struct tag  结构体类型

{

           member_list;         //成员变量

}variable_list;                  //可以直接创建全局变量,一般不用

 

typedef    给结构体重命名

 

例如:

struct Stu
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}s1,s2,s3;   //s1 s2 s3 三个全局变量,不建议这样使用


typedef struct Stu
{
    char name[20];
    short age;
    char tele[12];
    char sex[5];
}stu;


{
    //局部变量
    struct Stu stu1;
    struct Stu stu2;
    stu stu3;
}

 

结构体成员的类型

可以是标量、数组、指针,甚至是其他结构体

 

 

结构体内存对齐:

  1. 第一个成员在与结构体变量偏移量为0 的地址
  2. 其他成员变量要对齐到某个数字(对齐数)的整数倍地址
    1. 对齐数:编译器默认一个对齐数,与该成员大小的较小值(vs默认是 8 )
    2. 在对齐方式不合适的时候,可以更改默认对齐数  #pragma pack(修改值)

为什么存在内存对齐:为了访问未对齐的内存,处理器需要做两次内存访问,而对齐的内存访问只需要一次访问(拿空间换取时间)

 

 

结构体传参,传地址,用指针接收

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值