我定义了一个数组和一个指针 int a[10]; int *p; 为什么p=a;是正确的而a=p是错误的

假设变量都已经初始化

这明显不行啊。解释如下:数组也是一个指针,但数组在编译的时候地址是已经确定的,是不能改变的。也就是说你可以给数组对所指向的地址赋值,如下:*a=10;但不可以对数组变量赋值,如:a=p;纯指针更加灵活,你可以对它本身赋值,也就是改变它所指向的地址,也可以对它所指向的址赋值。如果执行p=a;则p也指向了a所指向的地址。不明白给我留言。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-10-23
a是数组名,p是指针
你可以让一个指针指向一个数组,但不能让数组名指向指针,因为数组名对应的地址是固定的,在编译的时候就确定了
第2个回答  2010-10-23
这就是 数组和指针之间的差别!
指针是变量,可以用其它的地址来 赋值!
但是数组是常量,是不能变的!
比如
++p; // right
++a; // error
第3个回答  2010-10-23
数组的变量名a是一个不可改变不可赋值的量。比如不可行的操作:a = p,a++,a--等等。