2

以下の説明は私を混乱させました:

引数が変数 x へのポインターである場合、通常は x が変更されると想定します。 f(&x);

ただし、f が x の値を調べるだけで、変更する必要がない場合もあります。

理解するのに疲れました。以下のコードは機能しません。

#include <stdio.h>

void function(int& a)
{
    a = 5;
}

void func(int b)
{
    b = 5;
}

int main(void)
{
    int x = 0;

    function(x);
    printf("%d", function(x));

    func(x);
    printf("%d", func(x));

    return 0;
}

コードは2 番目の回答から参照します。

int f(int &a){
  a = 5;
}
int x = 0;
f(x);
//now x equals 5

int f2(int b){
 b = 5;
}
int y = 0;
f2(y);
//y still equals 0
4

1 に答える 1

2

実際に使用した例f(&x):

#include <stdio.h>

void f(int *p) {
   *p = 4;
}

int main(void) {
   int x;
   f(&x);               // Provide a pointer to `x`.
   printf("%d\n", x);   // 4
   return 0;
}

あなたのプログラムはどちらも を使用していますint &aが、これは有効な C 宣言ではありません。それが彼らがコンパイルさえしない理由です。

于 2021-12-19T07:01:03.590 に答える