我想在另一个函数中更改堆栈中的值。
int Function(int *var){
int i=125;
var = i;
}
int Function2(){
int apple;
Function(&apple);
printf("%d", apple);
}
这会在error: assignment makes pointer from integer without a cast
行显示var = 125;
。
我想将i
的值复制到var
以获取apple = 125
。 (但是当我离开Function
时,堆栈中的i
将被释放。)
我看不出我犯了什么错误。
答案 0 :(得分:3)
您需要取消引用指针。
*var = 125;
正如所写的那样,你试图改变存储在指针中的地址(即指针指向的东西)。
答案 1 :(得分:1)
在您的代码int *var = &apple
发生。
想象一下,apple变量存储在地址0x1000000,
所以var拥有apple的地址。所以var指向0x1000000。
如果你做var = i那么var变量保留0x1000000地址并保持新地址为i的值125,这是无效的,因为较低的内存地址是不可访问的。
所以你必须要做* var = i,因为这符合你的要求。