0
A
回答
1
讓我仔細研究該行:
for(char const * i = "*****";printf("%s\n",i + 4) < 6;i--);
的for
循環條件第一部分:char const * i = "*****";
只是一個指向5級星級人物。 i+1
會指向****
,i+2
會指向***
等等。
第二部分打印給定數量的星星:printf("%s\n",i + 4)
。通常在for
循環的這一部分中,我們使用類似i < n
的東西。在這裏,而不是i
我們得到的結果printf
。
看一看man 3 printf
理解它:
返回值 在成功返回,這些函數返回打印的字符的數目(不包括用於結束輸出爲字符串的空字節)。
所以基本上我們的printf的i
串的更小的部分,直到printf的返回6
作爲打印的字符數。
1
這是它打印: -
*
**
***
****
*****
要點要記住: -
printf
沒有返回印刷for
循環字符的執行,直到條件計算爲真- 我被初始化爲常量字符串的最後一個開始,並且每次迭代向左移動1星
1
This might make it more clear:
char*i = "12345";
int charsPrinted = printf("%s\n", i + 4);
while (charsPrinted < 6)
{
i--;
charsPrinted = printf("%s\n", i + 4);
}
但它很可能會崩潰。要打破循環,charsPrinted必須達到6,這意味着i
不再指向字符串開始。這一點並不真正有效。它可能工作,但這取決於。如果沒有崩潰,將會打印:
5
45
345
2345
12345
相關問題
- 1. 我需要一些此代碼的一些解釋
- 2. 需要解釋一些代碼。
- 3. 代碼需要一些解釋
- 4. 瞭解一些的jsfiddle代碼看 - 需要一些解釋
- 5. 需要對此位代碼的解釋
- 6. 瞭解一些Java代碼 - 我需要一點解釋
- 7. 解釋的代碼需要
- 8. 的C#代碼好奇的一點 - 需要一些解釋
- 9. Python代碼解釋需要
- 10. 我需要一些關於這個彙編代碼的解釋
- 11. 需要我等待一些解釋和通知代碼
- 12. 需要一些幫助,試圖瞭解此代碼
- 13. 解釋一些代碼
- 14. 解釋一些javascript代碼
- 15. 解釋一些jQuery代碼
- 16. 需要關於此代碼與多態性的解釋
- 17. rails:需要對collection_select的一些解釋
- 18. 我需要彙編代碼的解釋
- 19. 需要JavaScript解釋的代碼
- 20. 需要解釋我的界面代碼
- 21. JavaScript代碼的解釋需要
- 22. 需要解釋過的C++代碼
- 23. 需要對這些代碼位的解釋
- 24. NoobProgramer =「需要對此JQUERY平滑滾動代碼進行解釋」
- 25. 需要一些解釋對財產
- 26. rails belongs_to has_one。需要一些解釋
- 27. 需要解釋一些Ruby語法
- 28. JavaScript語法需要一些解釋
- 29. 需要厄雷算法一些解釋
- 30. 需要解釋什麼代碼
不準備離開。該代碼太糟糕了,無法進行檢查。 – ThingyWotsit
Yo初始化一個指向明亮字符串的指針*****'然後你從後面打印字符串 i + 4是因爲pinter大小是4位而不是1作爲正則字符 –
@ScottHunter不,它聲明它是指向const char的指針,指針不是常量 –