你想說的是用來保存一組字符型指針的值的數(shù)組吧? 指針的值就是個(gè)地址值。
創(chuàng)新互聯(lián)主要從事網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)城廂,十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
這里錯(cuò)一下位寫成 char* argv[] 你看著是不是能有點(diǎn)明朗呢?它保存的就是你說的,一組字符型指針的值。
argv就是用來保存這組字符型指針的 這樣一個(gè)數(shù)組的首地址
參數(shù)里那個(gè) char *argv[] 也可以寫做 char argv[][] 或 char **argv
比如有這樣的數(shù)組char* str[6]={"a1","b2","c3","d4","e5","f6"};
那么 *(str+1) 將取到 "b2"的首地址 而 str[2] 將取到 "c3"的首地址
而str[3][1] 取到的不再是地址,而是具體的值 它表示的就是 str[3] 這個(gè)位置保存的那個(gè)字符指針指向的一組字符構(gòu)成的數(shù)組(字符串)的第2個(gè)數(shù)組元素
#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
試試, 觀察結(jié)果, 就什么都明白了. (假設(shè)生成的exe叫test.exe)
結(jié)果將是
your command line is:
test.exe abc de fg
Totally 3 parameters
C語言的帶參數(shù)的main函數(shù)格式為main(int?argc,char*?argv[]),其中argc為參數(shù)個(gè)數(shù)加1,argv為參數(shù)列表,從argv[1]開始。編譯后生成可執(zhí)行文件,可以在執(zhí)行的程序后加參數(shù),比如編譯一個(gè)程序?yàn)閠est.exe,則在執(zhí)行時(shí)可以輸入:
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]);
}
則上面的輸入會(huì)產(chǎn)生如下運(yùn)行結(jié)果:
You've?input?2?parameters.
The?No.1?is?1
The?No.2?is?firestone
main函數(shù)可以帶形參,
形參名字隨便,比如你可以叫main(int amao, char **agou),這沒問題,但形參的數(shù)量類型以及順序是固定的。
傳給形參的值只能由命令行中得到
即使帶形式參數(shù),也不一定有大于1個(gè)參數(shù),參照上一條,個(gè)數(shù)和值都是由命令行決定的
36:
A 相當(dāng)于i = i
B 語句非法,指針不能用乘法運(yùn)算,看起來是輸入錯(cuò)了,應(yīng)該是*p = *j; 如果是這樣的話,B就是答案,*p = xx,相當(dāng)于i=xx,*j,*和是逆運(yùn)算抵消,相當(dāng)于*p = j;
C 指針賦值給整形,錯(cuò)誤
D 一級(jí)指針,取兩次*,錯(cuò)誤。