C语言基础:数组在内存存储的大小(sizeof,strlen求大小)

整形数组: 

int main()
{
	//数组名首元素地址,下面是两个例外
	//1.sizeof(数组名)-数组名表示整个数组
	//2.&数组名-数组名表示整个数组
	
	int a[] = { 1,2,3,4 };
	printf("%d\n", sizeof(a));//计算的是数组总大小,单位是字节-16
	printf("%d\n", sizeof(a+0));//此时的a还是首元素地址 32平台4个字节,64平台为8
	printf("%d\n", sizeof(*a));//求的是首元素的大小,4个字节
	printf("%d\n", sizeof(a+1));//4/8
	printf("%d\n", sizeof(a[1]));//4
	printf("%d\n", sizeof(&a));//不是16,&a取出的是数组的地址,但是数组的地址那也是地址,地址的大小就是4/8个字节
	printf("%d\n", sizeof(*&a));//16 与第一种写法一样
	printf("%d\n", sizeof(&a+1));//4/8,虽然跳过整个数组,但是还是地址,
	printf("%d\n", sizeof(&a[0]));//4/8
}

字符数组:

char arr[] = { 'a','b','c','d','e','f' };
	printf("%d\n", sizeof(arr));//6 sizeof计算的是数组大小
	printf("%d\n", sizeof(arr+0));//4/8 首元素地址
	printf("%d\n", sizeof(*arr));//1  *arr就是首元素,大小一个字节
	printf("%d\n", sizeof(arr[1]));//1
	printf("%d\n", sizeof(&arr));//4/8 虽然是数组地址,但是还是数组地址
	printf("%d\n", sizeof(&arr+1));//4/8
	printf(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值