&引用;赋值的左操作数所需的左值;在C中使用指针时
我想练习C语言中的指针。我得到一个错误,显示“赋值的左操作数需要左值”。错误显示为at&y=&x。那我怎么能把x的地址改成y&引用;赋值的左操作数所需的左值;在C中使用指针时,c,pointers,C,Pointers,我想练习C语言中的指针。我得到一个错误,显示“赋值的左操作数需要左值”。错误显示为at&y=&x。那我怎么能把x的地址改成y int main() { int x=3; int y=4; &y=&x; printf("x=%p,y=%p",&x,&y); return 0; } 变量的地址是不可变的。它们是不允许改变的 您可以将该地址存储在指针变量中,然后将该指针更改为指向其他对象: int x=3, y=4; int *
int main()
{
int x=3;
int y=4;
&y=&x;
printf("x=%p,y=%p",&x,&y);
return 0;
}
变量的地址是不可变的。它们是不允许改变的 您可以将该地址存储在指针变量中,然后将该指针更改为指向其他对象:
int x=3, y=4;
int *p;
p = &x;
*p = 2;
printf("p=%p, &x=%p\n", (void *)p, (void *)&x); // prints same value both times
printf("x=%d\n", x); // prints 2
p = &y;
*p = 7;
printf("p=%p, &y=%p\n", (void *)p, (void *)&y); // prints same value both times
printf("y=%d\n", y); // prints 7
&y
无法重新分配。该位置是在编译时静态分配的,您不能在运行时更改它。y是一个变量,&y不是,因此不能更改&y只是获取该变量地址的一种方法。&y
只是变量的地址y
--您不能更改内存地址本身--您只能更改存储在该地址的内容。嗯,只有在运行时操作系统虚拟内存管理器才会分配地址本身,etc.。@DavidC.Rankin已分配。即使excat位置不是,也会以某种方式分配它,比如fixed
(有时用于全局),或SP+offset
或regisrr
,或dynamicheap
等。一旦分配它,就不能在C中更改它。他试图设置变量y
的地址,该地址在main
启动时绑定,在编译器设置的位置。绑定位置可以在有垃圾收集器的语言中更改,而不是通过C。是的,是的,这就是我认为您的目的。偏移量。所以你刚才说的作业有点混乱。