たまたま、argv[]
配列を介してプログラムのさまざまな引数にアクセスする関数がいくつかあります。現在、これらの関数は、そのmain()
ような構造を許可するためにコンパイラが提供する言語拡張により、関数内にネストされています。
ネストされた関数を取り除き、言語拡張に依存せずに相互運用できるようにしたいと考えています。
まずargv[]
、プログラムの開始時に指す配列ポインターを考えました。この変数は関数の外にあり、main()
関数の前に宣言して、関数で使用できるようにします。
そのため、次のようにそのようなポインターを宣言しました。
char *(*name)[];
これは、文字へのポインターの配列へのポインターである必要があります。ただし、それをポイントしようとするとargv[]
、互換性のないポインター型からの割り当てに関する警告が表示されます。
name = &argv;
何が問題なのですか?関数argv[]
の外から配列にアクセスする別の方法を考えていますか?main()