所以我寫了這個小程序,我是一個新手。它打印出我給它的命令行參數。我只是不明白爲什麼它在我將i變量初始化爲1之前工作,但是當我改變它時,我得到了分段錯誤。一旦使用了printf(),命令行參數會發生什麼變化?
代碼:
#include<stdio.h>
int main (int argc, char *argv[])
{
if (argc > 1) {
printf("Filename: %s has %d arguments.", argv[0], argc);
} else {
printf ("No arguments found!");
getchar();
return 0;
}
int i = 1;
printf("The arguments are: \n");
for (i < argc; ++i;) {
printf("Argument %d is: %s \n", i, argv[i]);
}
getchar();
return 0;
}
我從來沒有見過它說,一旦他們被用來有事到命令行參數。然而我的假設是在我對它們使用printf()後發生的命令行參數。當計數器變量i初始化爲零時,它第一次工作。當我通過將我初始化爲1來重新編程以跳過zero-eth時,參數給我提供了分段錯誤。我這樣做是因爲我對發生的事情有點困惑。這不是第二次打印出文件名,就像我想它會改變它,所以它不會反正(很有意義吧?不是回想起來哈哈)。
您已經在for循環的'initialization'部分編寫了測試;你有你的增量作爲一個測試(所以循環將運行,直到「i」增加到零,這將需要很長的時間(或當你訪問無效內存時崩潰你的程序);然後重新初始化子句是空的,你需要'for(int i = 1; i
當人們甚至不知道**語法時,需要「最小的理解」 ** – 2013-07-25 15:29:29
@ H2CO3:語法是正確的(如在允許的和可編譯的)。這是語法的錯誤語義。 –