本帖最后由 冷漠 于 2010-2-26 10:12 编辑
如果一个数组如下定义:
int a[10];
那么找个指针指向它只要int *p = a;就定义完成了...可以理解为“一个指向有10个整形数组的指针”
同样,有如下定义:
int (*p)[10];
该定义含义也是“一个指向有10个整型数数组的指针”,这个定义有点让我莫名其妙...写了那么多的C我还真没见过谁这么用的,
唉!中国的教授确实多数没把这个问题讲清。
1、int (*P)[10]和int a[10]的差别: a 是指针常量,也就是说:a只能固定指向所说明的那个(唯一)数组。但是P是指针变量,P不仅可以指向a 数组,还可以指向其它任何同类型数组,例如指向int b[10]。
2、int *P[10]; 和上面int (*P)[10]; 的差别已经很清楚了:上面叫做“数组的指针”;下面叫做“指针数组”。变换一下写法就清楚了:在一定条件下:
*P <——> P[ ]
老师没教?书上也写了。 所以:
char *P[10];——>char P[ ][10]; // 二维数组就是个指针数组。字符串数组中很常用的写法。
所以,把凡是C语言关于“字符串”用法的教材内容都找来看一遍,就不再陌生了。
还有:......能提出如此问题,已经高人一筹了,...... |