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()
.
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()
.