[英]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.