1.假设有一维int a[5],a代表数组的地址,&a有什么意义呢,
为什么这里a和&a的值相等呢?
2.假设有二维数组int a[2][3],a和&a也相等吗?
3.这个是谭浩强C程序设计里的例题:
#include<stdio.h>
int main()
{
int a[4]={1,3,5,7};
int (*p)[4];
p=&a; //第六行
printf("%d\n",(*p)[3]);
return 0;
}
书中说第六行只能写成p=&a,而不能是批p=a,
书中说p=a 表示p的值是&a[0],指向a[0].
p=&a表示p指向一维数组(行),(*p)[3]是p所指向行中序列为3的元素。
但实际上我用VC6.0调试时两个都能得到7的答案,只不过当p=&a时,没有报警,
而当p=a时,编译器有预警信息: warning C4047: '=' : 'int (*)[4]' differs in levels of indirection from 'int *'
难道谭浩强的这本书是按旧的C标准写的吗?还是说编译器允许这样的写法?
4.a和&a无条件等价吗?