int main(int argc, char* argv[])
{
int i,s;
s=0;
char*p;
for(i=1; i<argc;i++)
{
for (p=argv[i];*p;p++);
s+=(p-argv[i]);
}
printf("%d\n",s);
return 0;
}
我很難理解這段代碼的作用。這個程序基本上做什麼?減指針?
據我所知,它忽略了程序的名稱,並且在命令行中打印的每個其他字符串都將p
設置爲當前字符串。
- 條件
*p
說:「只要它不NULL
,即直到你已經達到了字符串的結尾? - 在每次迭代
s
總和當前p
的減法,其餘的p
旅遊這個詞,用的argv[i]
的名字,這是什麼減法的結果呢?這是兩個ASCII值的減法? - 這是什麼節目基本上做?
您可以通過在調試器中運行該程序或通過添加打印語句來檢查變量的中間值來回答所有這些問題。 – 2012-07-17 14:02:55
準備基本輸入。之後,打印出所有的argv,初始化p&i。爲了獲取更多信息,請在嵌套循環中打印。你會得到答案。或者,使用gdb – 2012-07-17 14:05:55
確定參數字符串的總長度。 – BLUEPIXY 2012-07-17 14:06:09