簡體   English   中英

C-一個功能的多個“輸出”

[英]C - multiple “outputs" from a function

我必須在這里做一些非常愚蠢的事情,但是我不知道該怎么做。 如果我在foo函數中打印值,它將顯示正確的值。

但是,如果我嘗試將它們打印在main中,則會得到無意義的結果(分別為0和1)。

void foo(int a, int b){

    a = 1;
    b = 2;

}

int main(void){

    int a;
    int b;

    foo(a, b);

    printf(“%i \n”, a);
    printf(“%i \n”, b);

}

您需要將foo方法更改為采用指針:

void foo(int *a, int *b)
{
   *a = 1;
   *b = 2;
}

然后,您對foo的調用必須更改為:

foo(&a, &b);

這基本上說:將地址“ a”和“ b”傳遞給函數foo,因此它具有更改其值的能力。

您之前的代碼只是向foo中發送了“ a”和“ b”的副本,因此對foo所做的更改對原始的兩個變量沒有影響。

在您的程序中,您嘗試在不傳遞地址的情況下更改函數中的局部變量,這可能會給您帶來錯誤的代碼。如果將地址傳遞給函數,則可以更改變量的值。

foo(&a,&b); //將地址傳遞給函數。

void foo(int * a,int * b)//訪問該地址的值

上面的過程稱為“按引用調用”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM