首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

各位路过,小弟有有关问题请问

2012-03-11 
各位路过,小弟有问题请教。#include stdafx.h#include string.h#define M1 How are ya,sweetie?char

各位路过,小弟有问题请教。

#include "stdafx.h"
#include "string.h"
#define M1 "How are ya,sweetie?"
char M2[40]="Beat the clock.";
char *M3="chat";


int _tmain(int argc, _TCHAR* argv[])
{
char words[80];
printf(M1);
puts(M1);
puts(M2);
puts(M2+1);
strcpy(words,M2);
strcat(words," Win a toy.");
puts(words);
words[4]='\0';
puts(words);
while(*M3)
puts(M3++);
puts(--M3);
puts(--M3);
M3=M1;
puts(M3);

return 0;

}

编译:
How are ya,How are ya,sweetie?
Beat the clock.
eat the clock.
Beat the clock. Win a toy.
Beat
chat
hat
t
t //不明白这儿为何输出t
at //为何这儿输出at
How are ya,sweetie?


[解决办法]
这样的问题,断点后单步调试,逐步分析更适合你的理解。
[解决办法]
当执行完
while(*M3)
puts(M3++);
后指针M3指向M3[4],也就是'0'.
puts(--M3);指针M3指向M3[3],输出直到字符串结束,即M3[4],也就是'0'.所以输出t.
puts(--M3);指针M3指向M3[2],所以输出M3[2]和M3[3],直到字符串结束,所以输出at.
M3[0],M3[1]分别是c和h
[解决办法]
while(*M3)
puts(M3++);
循环输出了几次;


chat
hat
t


有问题吧,应该是:
chat
hat
at
t

[解决办法]
同意楼上的说法。
[解决办法]
调试
[解决办法]
同意3楼说法

热点排行