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

C storing address of a variable in array

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

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

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

*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 是一个数组,所以会衰减为右值,并且无法将右值分配给)。

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

void main()不可移植,应该是int main().