问题。诸如“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) 接收双指针作为参数。因此,将 str 作为参数是有意义的,因为 str 是数组 char * str[3] 的名称,而 str 是此处作为数组名称的双指针。char * str[3] 是一个应该包含三个指针元素的数组....但是这些字符串而不是地址值怎么会放在 char * str[3] 旁边...这就是我卡住的地方!
请帮我!