如果你看看main()
聲明,你看到它的
int main(int argc, const char **argv);
或
int main(int argc, const char *argv[]);
所以argv
是const char *
(即字符指針或 「C字符串」)的數組。如果取消引用argv[1]
你會得到:
"s"
或:
{ 's' , '\0' }
,如果你解引用argv[1][0]
,你會得到:
's'
作爲一個側面說明,有不需要複製argv[1]
中的那個字符,你可以簡單地做:
const char *myarg = NULL;
int main(int argc, const char **argv) {
if (argc != 2) {
fprintf(stderr, "usage: myprog myarg\n");
return 1;
} else if (strlen(argv[1]) != 1) {
fprintf(stderr, "Invalid argument '%s'\n", argv[1]);
return 2;
}
myarg = argv[1];
// Use argument as myarg[0] from now on
}
「的陣列的argv心不是一個維陣列的第一個字符?「 - no:'char * argv []' - 這是一個指向指針的指針(你可以把它看作指向指向」'char指針「數組的第一個元素的指針) – 2014-01-15 12:01:16
In C ,數組和指針之間的差別可能看起來有點模糊,指針總是可以被解釋爲指向數組的第一個元素並且用[]索引,並且argv [1]給出指向char的指針,所以可以將另一個[]添加到使用它作爲char數組(這也是它在這種情況下也是這樣) – hyde
好吧,我明白了,我讀了這個http://crasseux.com/books/ctutorial/argc-and-argv.html,它說'argv是字符串的一維數組',這就是爲什麼我認爲它是一維的。 – yaylitzis