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()
。
关于C 在数组中存储变量的地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27916655/