【发布时间】:2010-02-17 00:35:18
【问题描述】:
我是初学者,我需要问一个问题.. 我写了这个小代码,它接受来自用户的字符串并打印出来……非常简单。
#include <iostream>
using namespace std;
int main()
{
int i;
char *p = new char[1];
for(i = 0 ; *(p+i) ; i++)
*(p+i) = getchar();
*(p+i) = 0;
for(i = 0 ; *(p+i) ; i++)
putchar(*(p+i));
return 0;
}
当我输入任何字符串时......例如“堆栈溢出”......它将打印“sta”并删除字符串的其余部分。我知道这很容易解决,但是由于我刚刚开始,所以我不明白这里出了什么问题。提前致谢。
【问题讨论】:
-
为什么是
*(p+i)而不是p[i]?当然还有其他问题。