【发布时间】:2013-10-30 10:49:40
【问题描述】:
这里有一个程序,我写的就是一个字符串的所有字符一个一个的输出。但我也打印了数组中各个块的地址。问题是所有块的地址都相同。为什么? 有人知道吗?
#include<stdio.h>
int main()
{
char enter[]="Kinsman";
char *ptr;
ptr=enter;
int i=0;
while(*ptr!='\0')
{
printf("%c%p\n",*ptr,&ptr);
ptr++;
for(i=0;i<=100000000;i++);
}
return 0;
}
【问题讨论】:
-
for(i=0;i<=100000000;i++);??为什么会这样 -
@GrijeshChauhan 回到我的旧 ATARI 800XL,用
FOR I=1 TO 500: NEXT I轻松完成等待一秒钟。但是这种方法——按周期等待——已经过时了大约 20 年。 -
@glglgl 是的,我在过去某处读过它,它会消耗 CPU 周期。 ~~ 但是 C 编译器可以通过替换
i = 100000000;.. 来优化它。它不可靠。对吗? -
@GrijeshChauhan 我用它只是为了让每个输出通过循环暂停。
-
@AshishTomer 最好使用适当的函数——Unix 上的
sleep()或usleep(),Windows 上的Sleep()。