你想说的是用来保存一组字符型指针的值的数组吧? 指针的值就是个地址值。
创新互联主要从事网站设计制作、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务城厢,十余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:028-86922220
这里错一下位写成 char* argv[] 你看着是不是能有点明朗呢?它保存的就是你说的,一组字符型指针的值。
argv就是用来保存这组字符型指针的 这样一个数组的首地址
参数里那个 char *argv[] 也可以写做 char argv[][] 或 char **argv
比如有这样的数组char* str[6]={"a1","b2","c3","d4","e5","f6"};
那么 *(str+1) 将取到 "b2"的首地址 而 str[2] 将取到 "c3"的首地址
而str[3][1] 取到的不再是地址,而是具体的值 它表示的就是 str[3] 这个位置保存的那个字符指针指向的一组字符构成的数组(字符串)的第2个数组元素
#includestdio.h
int main (int argc,char *argv[])
{
int i;
printf("your command line is: \n");
for (i=0; iargc; i++)
{
printf("%s ", argv[i]);
}
printf("\nTotally %d parameters\n", argc-1);
return 0;
}
编译后. 在命令行窗口输入
test.exe abc de fg
试试, 观察结果, 就什么都明白了. (假设生成的exe叫test.exe)
结果将是
your command line is:
test.exe abc de fg
Totally 3 parameters
C语言的带参数的main函数格式为main(int argc,char* argv[]),其中argc为参数个数加1,argv为参数列表,从argv[1]开始。编译后生成可执行文件,可以在执行的程序后加参数,比如编译一个程序为test.exe,则在执行时可以输入:
test.exe 1 firestone
在这里,argc等于3,argv[0]为"test.exe",argv[1]为"1",argv[2]为"firestone"。
如果有下面的程序:
#include stdio.h
void main(int argc,char *argv[])
{
printf("You've input %d parameters.\n",argc-1);
for(int i=1;iargc;i++)printf("The No.%d is:%s\n",i,argv[i]);
}
则上面的输入会产生如下运行结果:
You've input 2 parameters.
The No.1 is 1
The No.2 is firestone
main函数可以带形参,
形参名字随便,比如你可以叫main(int amao, char **agou),这没问题,但形参的数量类型以及顺序是固定的。
传给形参的值只能由命令行中得到
即使带形式参数,也不一定有大于1个参数,参照上一条,个数和值都是由命令行决定的
36:
A 相当于i = i
B 语句非法,指针不能用乘法运算,看起来是输入错了,应该是*p = *j; 如果是这样的话,B就是答案,*p = xx,相当于i=xx,*j,*和是逆运算抵消,相当于*p = j;
C 指针赋值给整形,错误
D 一级指针,取两次*,错误。