考虑一个典型的环境,为什么以下代码在C中是非法的?
{
int x;
&x = (int*) malloc(3*sizeof(int));
...
}
Run Code Online (Sandbox Code Playgroud)
Dan*_*ant 31
你不能为地址分配东西,x因为他的地址x不是左值
(一个lvalue是"的东西,可以被分配给",即,它不能是对大号的EFT侧等号)
尝试
int* x;
x = (int*) malloc(3*sizeof(int)); // TODO: Call free(x)
Run Code Online (Sandbox Code Playgroud)
现在x指向你分配的内存,你可以做类似的事情
int foo = *x;
int bar = x[0];
Run Code Online (Sandbox Code Playgroud)
您可分配的地址x ,以通过使用别的东西,&操作是这样的:
int x = 1;
int* y = &x; // y now holds the address of x
*y = 2; // Now x = 2
Run Code Online (Sandbox Code Playgroud)