0

重複の可能性:
C でシャドウされたグローバル変数にアクセスするにはどうすればよいですか?

同じ名前と型を持つ別のポインターを含む、関数内のグローバル ポインターにアクセスする方法。

元:

#include <stdio.h>

char *ptr = "Hello World";

int main(void)
{
//char ptr = 'a';
 char *ptr = "Global is over written";

printf("%s", ptr); //Here i am trying to print the value of global ptr i.e, "Hello World".

return 0;
}
4

3 に答える 3

1

%sdoを実行しているため%c、「a」が得られます。

instance member hidingとも呼ばれますshadowing

平易な言葉で言えば、「変数を取得するのに近づくと、それ以上は探さない」と言えます。

localとが同じ識別子を持っている場合、globalローカルが最初に表示されます

ローカルスコープでグローバル変数にアクセスする方法について詳しく知りたい場合

C++ では、::スコープ解決演算子を使用します

Cについては、リンクにアクセスしてください

于 2012-11-08T05:36:26.093 に答える
0

ローカル変数がグローバル変数を隠しているため、グローバル変数にアクセスできません。それらは両方とも同じスコープで定義され、同じ名前を持っています。両方にアクセスしたい場合は、名前を変更してください。可変シャドウイングの詳細を読む

于 2012-11-08T05:41:34.283 に答える
0

このようにしてグローバルな価値を得ることができます

#include <stdio.h>

char *ptr = "Hello World";
char *getGlobalPtr()
{
return ptr;
}

int main(void)
{
char ptr = 'a';
printf("%s", getGlobalPtr()); //Here i am trying to print the value of global ptr i.e, "Hello World".

return 0;
}
于 2012-11-08T05:43:58.280 に答える