2016-09-27 7 views
0
short int PC = 0; 

int main() { 
    foo(&PC) ; 
} 

void foo(short int PC) { 
    PC++; 
} 

どのようにしてPCのグローバル変数を正常に更新できますか?Cでグローバル変数をパラメータで参照して更新する

注::PCはパラメータとして渡す必要があり、グローバル変数はパラメータによって変更する必要があります。

私はC言語を初めて使い、*&の違いを理解しようとしています。どんな助けでも大歓迎です。

+2

コンパイラでこのコードの診断メッセージが表示されない場合は、使用しているスイッチを調整する必要があります。 (実行時に、少なくとも '&PC'が' short int'型を持たないため、未定義の動作を引き起こします) –

+0

グローバル変数をパラメータとして渡す際にポイントが表示されません。 – babon

答えて

4

あなただけのポインタとして引数を取る必要があります。

short int PC = 0; 

void foo(short int *pc) { 
    (*pc)++; 
} 

int main() { 
    foo(&PC) ; 
} 

Cにあなたは彼らが使用される前に、物事を宣言しなければならないので、私はmain()上記foo()を移動しました。あなたが好きなら、それを先にvoid foo();と言って宣言し、以下の定義を残すことができます。

+0

Aha!あなたはまた '(* PC)++;で第二の問題を解決しました。周囲の括弧がなければ、私はその声明が何もしなかったという警告を受けていました。 – Nic

+2

'foo()'の引数の名前を変更すると、おそらく役に立ちます。同じ名前の2つのもの(「PC」)を持つことは、そうでないときと同じことを示唆しています。 – Peter

+0

@Peter:良い点、編集。 –

関連する問題