郁闷了半天了,如何 结果可以是这个 郁闷。

郁闷了半天了,怎么 结果可以是这个郁闷。。。#include iostreamusing namespace stdvoid main(){char s1[]

郁闷了半天了,怎么 结果可以是这个 郁闷。。。
#include <iostream>
using namespace std;
void main()
{
char s1[]="diweiguang",s2[30],*p,*q;
p=s1;
q=s2;
for(;*p!='\0';p++,q++)

*q=*p;
*q='\0';
//p=s1;
//q=s2;

cout<<*q<<endl;
cout<<*p<<endl;
}
我输出*q和p的时候输出的结果居然是两个 a a  
我想了半天也想不出 会输出时a 啊 求大神指点下。。。。。

[解决办法]
p, q指针在循环之后都指向'\0'了.
[解决办法]
贴出来的代码输出两个a是不可能的。

因为,在最后输出的时候:
*p会指向'\0'因为for结束时*p == '\0'并且之后没有给p赋过值
*q也会指向'\0'因为for结束后执行了*q = '\0'

看以正确这段代码的输出应该是两个空行,建议楼主发帖先把代码贴在任一C++开发环境中编译执行一下:)
[解决办法]
楼主是刚学编程么?这么愚蠢的问题
[解决办法]
哥在另外一个帖子中给你回答了,请看那个帖子中9楼的回复。

下次再错就该打pp了