2025年C语言中的结构体,结构体中数组初始化与赋值

C语言中的结构体,结构体中数组初始化与赋值最近写 c 语言中的结构体遇到了些问题 从网上找了些资料如下 结构体是连续存储的 但由于结构体中成员类型各异 所以会存在内存对齐问题 也就是内存里面会有空档 具体的对齐方式这里 暂不讨论 1 结构体的定义和赋值 结构体是可以直接初始化的 在定义的时候 就可以初始化 而且如果你的结构体中恰好有字符数组的话 这个时候初始化是不错的选择 原因很简单 字符数组只能定义的时候直接初始化 后来就不可以了

最近写c语言中的结构体遇到了些问题,从网上找了些资料如下:

结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也就是内存里面会有空档,具体的对齐方式这里 暂不讨论;

1.结构体的定义和赋值

结构体是可以直接初始化的,在定义的时候,就可以初始化,而且如果你的结构体中恰好有字符数组的话,这个时候初始化是不错的选择,原因很简单,字符数组只能定义的时候直接初始化

后来就不可以了,后来你就只能用strcpy函数来拷贝初始化了。

struct 结构体名
{
数据类型 成员名1;
数据类型 成员名2;

数据类型 成员名n;
};

2.定义结构体变量的3种方法:

第1种:

struct 结构体名
{
成员列表;
}变量名1;

第2种:

struct 结构体名
{
成员列表;
};
struct 结构体名 变量名2;

第3种:

typedef struct 结构体名
{
成员列表;
}结构体别名;

结构体别名 变量名3;

访问结构体成员的2种方式:
1、直接访问:结构体变量名.成员名

2、指针访问:结构体变量指针->成员名

3.结构体初始化操作

1. struct 结构体名 变量名 = {0,0,0,...};

2. struct 结构体名 变量名 =
{
.成员1 = 0,
.成员2 = 0,
.成员3 = 0,
...
};

3. struct 结构体名 变量名 =
{
成员1: 0,
成员2: 0,
成员3: 0
};

第2、3种方式成员顺序可以打乱,甚至可以只初始化其中某几个成员。3种初始化的方式在linux下使用GCC编译均可通过。

4.结构体定义时的嵌套

1、内部的结构体名称定义齐全

struct student
{
int a;
int b;
struct other
{
int c;
int d;
}name;
};

引用c成员的方式: 变量.name.c

2、 内部的结构体通常定义为无名结构体

struct student
{
int a;
int b;
struct
{
int c;
int d;
};
};

引用c成员的方式:变量.C
编程小号
上一篇 2025-04-03 22:21
下一篇 2025-03-12 23:21

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/141376.html