为什么这个函数不增加我在 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 的指针传递给你的函数,并且取消引用未初始化的指针会调用 undefined behavior

您想要将 x 地址分配给 p:

p = &x;

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

inc(&x);

因为你没有设置px

的地址

使用

p = &x;

而不是

*p = x;

使用 *p = x 会导致未定义的行为,因为 p 具有不确定的值并指向 *某处*。但是您不知道它指向何处,并且使用 *p = xx 的值写入该内存位置。

您需要将x的地址分配给p。正如其他答案中提到的,您可能只想传入 inc(&x);。不需要声明一个变量就这样浪费它。