|
发表于 2021-9-15 10:35:27
|
显示全部楼层
array[0]地址,array,&array 表示的是同一个地址,但他们的含义不一样,而编译器是要检查类型是否一致的,&array[0]表示数组的第一项的地址,array编译器代表的也是第一项的地址,而&array表示整个数组五项的一起的首地址。
钱看代码
- #include<stdio.h>
- int main()
- {
- char *array[5] = {"FishC", "Five", "Star", "Good", "WoW"};
- char *(*p)[5] = &array;
- printf("array[0]的内容: %d\n",array[0]);
- printf("array[0]指向的内容: %s\n",array[0]);
- printf("array[0]的地址(与array数组的首地址): %d\n",&array[0]);
- printf("p的内容(即array数组的首地址): %d\n",p);
- printf("array[0]的内容: %d\n",(*p)[0]);
- printf("array[0]指向的内容: %s\n",(*p)[0]);
- printf("array[0]的地址(与array数组的首地址): %d\n",&(*p)[0]);
- printf(": array第一项的地址%d,array第二项的地址%d\n", array, array+1);
- printf(": array的地址%d,array数组后面的地址%d\n", &array, &array+1);
- return 0;
- }
复制代码
运行后看看地址的偏移量 |
|