更改函数内变量的值

时间:2016-10-06 02:13:41

标签: c

我想在另一个函数中更改堆栈中的值。

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将被释放。)

我看不出我犯了什么错误。

2 个答案:

答案 0 :(得分:3)

您需要取消引用指针。

*var = 125;

正如所写的那样,你试图改变存储在指针中的地址(即指针指向的东西)。

答案 1 :(得分:1)

在您的代码int *var = &apple发生。

想象一下,apple变量存储在地址0x1000000,

所以var拥有apple的地址。所以var指向0x1000000。

如果你做var = i那么var变量保留0x1000000地址并保持新地址为i的值125,这是无效的,因为较低的内存地址是不可访问的。

所以你必须要做* var = i,因为这符合你的要求。