0

私はこの機能を持っています:

void update(int something, int nothing) {
    something = something+4;
    nothing = 3;
}

そして、関数呼び出し:

int something = 2;
int nothing = 2;

update(something, nothing);

関数内では、何かが 6 になり、何も 3 になりませんが、何も返さないため、値は変化しません。

ひとつの値なら関数の戻り値を使えばよかったのですが、今はポインタを使わないといけないと思いますよね?

関数呼び出しの後に新しい値を使用できるように、関数から何かと何も返されないようにしたいのですが、どうすればよいですか? :)

4

3 に答える 3

8

を使用して値を送信し&*

例:

void update(int* something, int* nothing) {
    *something = *something+4;
    *nothing = 3;
}

int something = 2;
int nothing = 2;

update(&something, &nothing);

C を使わずに 2 年が経ちましたが、これは正しいと思います。

于 2013-09-17T06:56:31.860 に答える
1

打撃コードを使用します。

1)

  void update(int * something, int * nothing) 
    {
        *something = *something + 4;
        *nothing = 3;
    }

    int something = 2;
    int nothing   = 2;

    update(&something, &nothing);

これは、変数のアドレスを関数 update に渡し、アドレス内の値を変更していることを意味します。

また

2)グローバル変数を何もせずに何かを作成します。それもうまくいくはずです。しかし、それは良い解決策ではありません。

于 2013-09-17T07:01:40.410 に答える
1

やりたいことは、変数の参照と逆参照です。を呼び出す&variableと、その変数へのポインターが取得され、呼び出す*variableと、この変数が指すものが取得されます。ここでは、ポインターに関する詳細情報を取得できます。

void update(int* something, int* nothing) {
    *something = *something+4
    *nothing = 3
}

int something = 2;
int nothing = 2;

update(&something, &nothing);

これはあなたが望むものですが、コードを知らない人はあなたが何をしているのか理解できないので、これは最良のスタイルではありません. つまり、実際に必要でない限り、パラメーター変数を変更してはならないということです。ほとんどの関数は、そのような動作なしで記述できます。

本当に 2 つの変数を「返す」必要がある場合は、次のようにします。

int update(int something, int* nothing) {
    something += 4;
    *nothing = 3;
    return something;
}

int something = 2;
int nothing = 2;

something = update(something, &nothing);
于 2013-09-17T06:58:19.040 に答える