void main()
{
int a=10;
int *j;
*j=&a;
b[]={1,2,3,4};
b=j;
}
有人问我这个程序有什么问题,我只是对我感到困惑一切似乎都很好。只是好奇才知道。
答案 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()
。