質問。「C Programming」などの文字列が次のようにアドレス値としてコンパイルされるのはなぜですか?
#include <stdio.h>
void ShowAllString(int argc, char * argv[])
{
int i;
for(i=0; i<argc; i++)
printf("%s \n", argv[i]);
}
int main(void)
{
char * str[3]={
"C Programming",
"C++ Programming",
"JAVA Programming" };
ShowAllString(3, str);
return 0;
}
私のアナロジーは次のようなものでした...できれば訂正してください。
char * argv[] パラメータの場合、これは char ** argv と同等です。したがって、この関数は void ShowAllString(int argc, char ** argv) のように、引数として double ポインターを受け取ります。したがって、str は配列 char * str[3] の名前であり、str はここでは配列名としての二重ポインターであるため、パラメーターとして str を持つことは理にかなっています。char * str[3] は、ポインターの 3 つの要素を持つことになっている配列です....しかし、アドレス値の代わりにそのような文字列が char * str[3] の隣に配置されるのはなぜですか...これは私が立ち往生している場所です!
私を助けてください!