繁体   English   中英

为什么这个函数没有在c中递增我的变量?

[英]Why is this function not incrementing my variable in c?

所以只是在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到你的功能,并取消引用未初始化的指针调用未定义的行为

您想要将x地址分配给p

p = &x;

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

inc(&x);

因为您没有将p设置为x的地址

采用

p = &x;

代替

*p = x;

使用*p = x会导致未定义的行为,因为p具有不确定的值并且指向*某处*。 但你不知道它在哪里点,与*p = x你写的值x到内存位置。

您需要将x的地址分配给p。 如其他答案所述,您可能只想传递inc(&x); 无需声明变量并将其浪费。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM