关于这类题,我们需要了解一下基本内容
sizeof 字符串开辟空间的大小,包括’\0’
strlen 字符串长度,求的是字符串的有效个数,不包括’\0’
数组名一般代表首元素的地址
只有两种情况,代表整个数组的地址
- sizeof(数组名)单独使用时
- &数组名
具体理解如下:
一、一维数组:
//一维数组
int a[] = {
1, 2, 3, 4 };
printf("%d\n", sizeof(a));//16 整个数组的地址
printf("%d\n", sizeof(a + 0));//4 首元素地址
printf("%d\n", sizeof(*a));//4 首元素
printf("%d\n", sizeof(a + 1));//4 第二个元素的地址
printf("%d\n", sizeof(a[1])); //4 第二个元素的地址
printf("%d\n", sizeof(&a));// 4 整个数组的地址
printf("%d\n", sizeof(*&a));//16 整个数组 *&a相当于a
printf("%d\n", sizeof(&a + 1));// 4 下一个数组的地址
printf("%d\n", sizeof(&a[0]));//4 首元素的地址
printf("%d\n", sizeof(&a[0] + 1));//4 第二个元素的地址
二、字符数组
- sizeof 求字符串长度包含’\0’
- strlen求有效元素个数&#