簡體   English   中英

如何修改在C函數中按值而不是按引用傳遞的變量?

[英]How to modify variables passed by value instead of by reference within function in C?

如何修改在C函數中按值而不是按引用傳遞的變量?

void fun_a(int a, int b) {
  ....
}

int main() {
    int x = 5, y = 6;
    printf("%d, %d", x, y);    // 5, 6

    fun_a(x, y);               // pass by value

    printf("%d, %d", x, y);    // 1, 2

    return 0;
}

如何使用fun_a更改變量?

有什么辦法嗎? 雖然我知道它可以通過輕松傳遞引用來更改變量。

C不了解參考。 請改用指針。

void fun_a(int *a, int *b) {
   *a = 10;
   *b = 12;
}

int main() {
    int x = 5, y = 6;
    printf("%d, %d\n", x, y);    // 5, 6
    fun_a(&x, &y);             // pass pointer to variable
    printf("%d, %d\n", x, y);    // 10, 12

    return 0;
}

簡單的答案:你不能。 為了實現您的目標,您必須通過指針。

暫無
暫無

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

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