簡體   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