//一维数组
int a[] = {1,2,3,4};
printf("%d\n",sizeof(a+1)); //第二个元素 4
printf("%d\n",sizeof(a[1])); //取地址 4
printf("%d\n",sizeof(&a)); // 整个数组 16
printf("%d\n",sizeof(&a+1)); //向后跳一个数组 4
printf("%d\n",sizeof(&a[0])); //第一个元素的地址 4
printf("%d\n",sizeof(&a[0]+1)); //第二个元素的地址 4
//字符数组
char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr)); //整个数组地址 6
printf("%d\n", sizeof(arr+0)); //首元素地址 4
printf("%d\n", sizeof(*arr)); // 一个字节 1
printf("%d\n", sizeof(arr[1])); //第二个元素 1
printf("%d\n", sizeof(&arr)); //地址 4
printf("%d\n", sizeof(&arr+1)); // 下一个地址 4
printf("%d\n", sizeof(&arr[0]+1));//下一个元素地址 4
printf("%d\n", strlen(arr)); //大于6的随机值
printf("%d\n", strlen(arr+0)); //随机值
printf("%d\n", strlen(*arr)); //相当于’a' ERROR
printf("%d\n", strlen(arr[1])); // ERROR
printf("%d\n", strlen(&arr)); //
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char *p = "abcdef";
printf("%d\n", sizeof(p)); //一个指针4个字节 4
printf("%d\n", sizeof(p+1)); 4
printf("%d\n", sizeof(*p)); //字符指针 1
printf("%d\n", sizeof(p[0])); 1
printf("%d\n", sizeof(&p)); 4
printf("%d\n", sizeof(&p+1)); 4
printf("%d\n", sizeof(&p[0]+1));//地址 4
printf("%d\n", strlen(p)); 6
printf("%d\n", strlen(p+1)); 5
printf("%d\n", strlen(*p)); ERROR
printf("%d\n", strlen(p[0])); ERROR
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));
//二维数组
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
printf("%d\n",sizeof(a[0]+1));首元素地址 4
printf("%d\n",sizeof(a+1));//第二行地址 16
printf("%d\n",sizeof(&a[0]+1));第二行第一个元素 4
printf("%d\n",sizeof(*a)); 16
int a[] = {1,2,3,4};
printf("%d\n",sizeof(a)); //求数组大小 16
printf("%d\n",sizeof(a+0)); //求第一个元素的大小 4
printf("%d\n",sizeof(*a)); // 第一个元素 4printf("%d\n",sizeof(a+1)); //第二个元素 4
printf("%d\n",sizeof(a[1])); //取地址 4
printf("%d\n",sizeof(&a)); // 整个数组 16
printf("%d\n",sizeof(&a+1)); //向后跳一个数组 4
printf("%d\n",sizeof(&a[0])); //第一个元素的地址 4
printf("%d\n",sizeof(&a[0]+1)); //第二个元素的地址 4
//字符数组
char arr[] = {'a','b','c','d','e','f'};
printf("%d\n", sizeof(arr)); //整个数组地址 6
printf("%d\n", sizeof(arr+0)); //首元素地址 4
printf("%d\n", sizeof(*arr)); // 一个字节 1
printf("%d\n", sizeof(arr[1])); //第二个元素 1
printf("%d\n", sizeof(&arr)); //地址 4
printf("%d\n", sizeof(&arr+1)); // 下一个地址 4
printf("%d\n", sizeof(&arr[0]+1));//下一个元素地址 4
printf("%d\n", strlen(arr)); //大于6的随机值
printf("%d\n", strlen(arr+0)); //随机值
printf("%d\n", strlen(*arr)); //相当于’a' ERROR
printf("%d\n", strlen(arr[1])); // ERROR
printf("%d\n", strlen(&arr)); //
printf("%d\n", strlen(&arr+1));
printf("%d\n", strlen(&arr[0]+1));
char *p = "abcdef";
printf("%d\n", sizeof(p)); //一个指针4个字节 4
printf("%d\n", sizeof(p+1)); 4
printf("%d\n", sizeof(*p)); //字符指针 1
printf("%d\n", sizeof(p[0])); 1
printf("%d\n", sizeof(&p)); 4
printf("%d\n", sizeof(&p+1)); 4
printf("%d\n", sizeof(&p[0]+1));//地址 4
printf("%d\n", strlen(p)); 6
printf("%d\n", strlen(p+1)); 5
printf("%d\n", strlen(*p)); ERROR
printf("%d\n", strlen(p[0])); ERROR
printf("%d\n", strlen(&p));
printf("%d\n", strlen(&p+1));
printf("%d\n", strlen(&p[0]+1));
//二维数组
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
printf("%d\n",sizeof(a[0]+1));首元素地址 4
printf("%d\n",sizeof(a+1));//第二行地址 16
printf("%d\n",sizeof(&a[0]+1));第二行第一个元素 4
printf("%d\n",sizeof(*a)); 16
printf("%d\n",sizeof(a[3]));//第四行 16
数组名代表整个数组只有两种情况:
sizeof(数组名)
&数组名