同じ名前のローカル変数がある場合、C でグローバル変数にアクセスする方法は?
int m=20 ;
void main()
{
int m=30;
}
同じ名前のローカル変数がある場合、C でグローバル変数にアクセスする方法は?
int m=20 ;
void main()
{
int m=30;
}
Cでは、できます。もちろん、これは雑学なので、実際には絶対にやってはいけません。
何かを宣言するextern
ことはどこでも行うことができ、宣言された変数を常にその名前のグローバルにリンクします。
#include <stdio.h>
int i = 3;
int main( int argc, char **argv ) {
int i = 6;
printf( "%d\n", i );
{ // need to introduce a new scope
extern int i; // shadowing is allowed here.
printf( "%d\n", i );
}
return 0;
}
C++ では、グローバルは常に として使用できます::i
。
Cでは方法はありません。実際には、追加のスコープを導入し、extern
宣言を使用して、@Potatoswatterの回答を参照してください。
::
C ++では、 (のように)を使用してグローバル名前空間で識別子を検索できます::m=15
。これは、「通常の」名前空間(std::cout
、...)のメンバーにアクセスするために使用される演算子と同じです。
また、int main()
です。
Cではそうではありません。彼らに別の名前を付けてください、それはとにかく混乱し、悪い習慣です。
m が再定義されるまで、とにかく同じ名前は悪い習慣です。何らかの方法でグローバル変数にアクセスしています
int m=20 ;
void main()
{
print m // 20 would be printed here .
// max you can do
int m=30;
}