本帖最后由 YiMingC 于 2019-4-29 21:29 编辑
问题一:
对于:
int (*p2)[5] = &temp;
为什么是对地址再取址...难道地址还有专门的地址来储存吗...        
不太清楚这里是应该把temp当作单纯的数组名来看还是数组名的值来看...
#include <stdio.h>
int main()
{
int temp[5] = {1, 2, 3, 4, 5};
int (*p2)[5] = &temp;
int i;
for (i = 0; i < 5; i++)
{
printf("%d\n", *(*p2 + i));
}
return 0;
}
问题二:
代码如下:
第5行的 “char *(*p)[5] = &array;” 这段声明看不太懂,这是什么?数组指针吗...?p又是什么...
#include <stdio.h>
int main()
{
char *array[5] = {"FishC", "Five", "Star", "Good", "WoW"};
char *(*p)[5] = &array;
int i, j;
for (i = 0; i < 5; i++)
{
for (j = 0; (*p)[i][j] != '\0'; j++)
{
printf("%c ", (*p)[i][j]);
}
printf("\n");
}
return 0;
}
问题三:
课后作业的一段原文:
argv(第二个形参)必须是指向字符指针的指针(注意:它不是指针数组,但你可以理解为指向一个字符指针数组名或字符串数组
我的问题在于:
既然argv不是指针数组,
那为什么可以理解为指向一个字符串数组,这前后不矛盾吗?
问题比较多,麻烦大家了!
“char *(*p)[5] = &array;”
p是一个指针,这个指针指向一个数组,这个数组有5个元素,每一个元素都是指针,每一个指针都指向一个char
或者
p是一个指针,这个指针指向一个数组,这个数组有5个元素,每一个元素都是指针,都是char *
^_^
|