C在数组中存储变量的地址

时间:2015-01-13 07:10:30

标签: c arrays pointers

void main()
 {
 int a=10;
 int *j;
 *j=&a;
 b[]={1,2,3,4};
 b=j;
 }

有人问我这个程序有什么问题,我只是对我感到困惑一切似乎都很好。只是好奇才知道。

1 个答案:

答案 0 :(得分:4)

打开所有编译器警告和错误。然后它会告诉你程序究竟出了什么问题。

*j = &a;违反了约束条款。 *j的类型为int,但&a的类型int *不兼容。

您可能需要j = &a;j指向a

b[]={1,2,3,4};是语法错误。也许你的意思是int b[]={1,2,3,4};会声明一个数组。

b=j;是一种约束违规,因为b是一个数组,并且无法分配数组。 (技术上:因为b是一个数组,衰减到右值并且无法分配rvalues)。

但是,j = b;可以,j会指向b的第一个成员;

void main()不可移植,应为int main()