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