c结构体和数组之间的联系

本文探讨了C语言中结构体和数组的初始化方式,指出C99标准下数组指定初始化的特性,并揭示了结构体在内存中的存储形式,包括可能存在的字节对齐现象。同时,介绍了通过变量和指针访问结构体及数组的方法,以及在函数调用中结构体和数组参数传递的差异——数组按地址传递,结构体则按值传递。
摘要由CSDN通过智能技术生成

结构体和数组的异同


学习的教材说结构体为“超级数组”,所以看看数组和结构体的相似点

定义两个简单的结构体和数组并初始化
c99对应的数组指定初始化和结构体指定初始化有相似之处
int a[]={1,[6]=23,4}
// a[0]=1,a[6]=23,a[7]=4.
struct lok {
int a;
float b;
int c[10];
}L{ .b=1.1 };

struct lok {
   
	int a;
	double b;
	int c[10];
}L{
    1,1.1,{
   0} };

int A[2] = {
    1,2 };

存储的形式
存储都为连续空间,数组存储的为同一数据类型,但结构体可能因为存储不同数据类型的字节对齐导致中间存在剩余空间。

  • 字节对齐:内存都是按照byte划分的,但是为了内存管理和访存速度
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值