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的指针,指针不是常量 –