二维数组 + sizeof()练习

本文通过实例解析了二维数组`a`在C/C++中的内存布局,展示了sizeof运算符在不同情况下的应用,包括数组大小、元素大小、指针计算。重点讨论了数组名、指针和元素地址的计算,以及如何使用sizeof获取不同类型的数据大小。
摘要由CSDN通过智能技术生成
int main()
{
	int a[3][4] = {0};

	printf("%d\n", sizeof(a));  //48--二维数组大小
	printf("%d\n", sizeof(a[0][0]));  //4--第一个元素大小
	printf("%d\n", sizeof(a[0]));  //16--a[0]表示第一行数组的数组名
	printf("%d\n", sizeof(a[0] + 1));  //4
	//4--a[0]为第一行数组的数组名,此时表示首元素地址
	//a[0] + 1为第一行第二个元素的地址

	printf("%d\n", sizeof(*(a[0] + 1)));  //4--第一行第二个元素大小
	printf("%d\n", sizeof(a + 1));  //4
	//4--a为二维数组首元素地址--第一行的地址
	//a + 1表示第二行的地址

	printf("%d\n", sizeof(*(a + 1)));  //16--第二行数组大小
	printf("%d\n", sizeof(&a[0] + 1));  //4--第二行的地址
	printf("%d\n", sizeof(*(&a[0] + 1)));  //16--第二行数组大小
	printf("%d\n", sizeof(*a));  //16--第一行数组大小
	printf("%d\n", sizeof(a[3]));  //16
	//sizeof()--函数内部表达式不会进行访问,该函数只计算大小
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值