gpt4 book ai didi

c - 为什么这个函数不增加我在 c 中的变量?

转载 作者:行者123 更新时间:2023-12-04 19:47:37 26 4
gpt4 key购买 nike

所以只是在 C 中试验指针。

void inc(int *p){
++(*p);
}

int main(){
int x = 0;
int *p;
*p = x;
inc(p);
printf("x = %i",x);
}

为什么打印的是“x = 0”而不是“x = 1”?

最佳答案

这是你的错误:

*p = x;

您正在取消引用未分配的 p,并为其提供 x 的当前值。所以 x 没有改变,因为您没有将指向 x 的指针传递给您的函数,并且取消引用未初始化的指针会调用 undefined behavior .

您反而想将 x 的地址分配给 p:

p = &x;

或者,您可以完全删除 p 并将 x 的地址传递给 inc:

inc(&x);

关于c - 为什么这个函数不增加我在 c 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54890640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com