【c语言】数组小练习

一维数组

int a[] = { 1, 2, 3, 4 };

1 printf("%d\n", sizeof(a));
// 16
2 printf("%d\n", sizeof(a+0));
// 4 不是单独放在sizeof()内是第一个元素的地址
3 printf("%d\n", sizeof(*a));
//4 *a就是啊a【0】
4 printf("%d\n", sizeof(a+1));
//4 第二个元素的地址
5 printf("%d\n", sizeof(a[1]));
//4 第二个元素
6 printf("%d\n", sizeof(&a));
// 4 地址都是4个字节(32平台)
7 printf("%d\n", sizeof(&a+1));
//4 4后面的地址
8.printf("%d\n", sizeof(&a【0】));
//4 第一个元素的地址
9.printf("%d\n", sizeof(&a【0】+1));
//4 第二个元素的地址

分析:1.数组名单独放在sizeof()内部,数组名表示整个数组,sizeof(数组名)计算的是整个数组的大小,单位是字节
2.&数组名,数组名表示整个数组,&数组名,取出的是整个数组的地址
3.除此之外所有的数组名都表示整个首元素地址

字符数组

char a[]={‘a’,‘b’,‘c’,‘d’,‘e’,‘f’};

1.printf("%d\n", sizeof(a));
//6
2.printf("%d\n", sizeof(a+0));
//4 地址
3.printf("%d\n", sizeof(*a));
//1 字符a
4.printf("%d\n", sizeof(a【1】));
//1
5.printf("%d\n", sizeof(&a));
//4
6.printf("%d\n", sizeof(&a+1));
//4
7.printf("%d\n", sizeof(&a【0】+1));
//4 f的后面地址
8.printf("%d\n", sizeof(&a+1));
//4 第二个元素的地址

1.printf("%d\n", strlen(a));
//随机值 因为没有\0
2 printf("%d\n", strlen(a+0));
//随机值 并且和上一个一样
3.printf("%d\n", strlen(*a));
//错误
4.printf("%d\n", strlen(a【1】));
//错误
5.printf("%d\n", strlen(&a));
//随机值
6.printf("%d\n", strlen(&a+1));
//随机值 和1的随机值差6
7.printf("%d\n", strlen(&a【0】+1));
//随机值 和1的随机值差1

猜你喜欢

转载自blog.csdn.net/weixin_41892460/article/details/82788859