0

これは、メイン関数で使用される変数 a と b を変更する func 関数を取得しようとしている簡単なテスト プログラムです。func が変更された変数を返して使用できるようにする方法はありますか? (構造体がどのように機能するのか理解できないので、できれば使用しないでください)

#include <stdio.h>

void func(int a, int b)
{
    a=a+1;
    b=b+1;
}

void main(void)
{
    int a=0, b=0;
    while (1)
    {
        func(a,b);
        printf("%d\n",a);
    }
}
4

3 に答える 3

2

呼び出し元の関数で変数を変更したい場合は、それらのアドレスを渡す必要がありますfunc(つまり、これらの変数へのポインタを渡します)。

void func(int* a, int* b)
{
    *a=*a+1;
    *b=*b+1;
}

func(&a,&b);

コードは引数を値で渡します。これは、abが新しい変数にコピーされることを意味します。この変数は、呼び出し変数の値で初期化されますが、 の期間だけ存在しfuncます。

于 2013-09-30T10:38:14.593 に答える
0

同意します。これを行う最善の方法は、ポインタを使用することです。しかし、コードが決して終了しないことを知っていますか? while ループの実行を終了できる条件を使用する必要があります。

また、両方の変数に対してまったく同じアクションを実行したい場合は、次のように return ステートメントを使用できます。

#include <stdio.h>
void func(int a, int b)
{
    return a+1;
}

void main(void)
{
    int a=0, b=0;

    while (a < 5)
    {
        func(a);
        func(b);
        printf("%d\n",a);
    }
}
于 2013-09-30T10:46:17.620 に答える