【发布时间】:2012-08-03 15:00:07
【问题描述】:
我了解到一个指针指向一个内存地址,因此我可以使用它来更改在该地址设置的值。像这样:
int *pPointer = &iTuna;
pPointer这里有iTuna的内存地址。所以我们可以使用pPointer 来改变iTuna 的值。如果我打印pPointer,则内存地址被打印,如果我打印*pPointer,则iTuna 的值被打印
现在看这个节目
char* pStr= "Hello !";
cout<< pStr << endl;
cout<< *pStr << endl;
system("PAUSE");
return 0;
这里有很多我不明白的东西:
在“你好!”中每个字母单独存储,一个指针保存一个内存地址。那么
pStr如何指向所有的字母呢。另外,当我打印出
pStr时,它会打印出Hello !,而不是内存地址。当我打印出
*pStr时,它只会打印出H,而不仅仅是pStr指向的所有内容。
我真的无法理解,这些都是我的担忧。我希望有人可以向我解释这是如何工作的广告帮助我理解
【问题讨论】:
-
请去掉system("pause")。
-
我不太喜欢那篇文章,因为如果 cin.get() 或 getchar() 在输入操作后不会暂停,初学者(最有可能的观众)会发现自己很困惑。
-
char* pStr= "Hello !";已弃用,请使用char const*。 -
@Cubic,是的,您必须通过使用其中的一个或两个来解决它,或者您可以在调用
cin.get之前依赖cin.sync的非保证行为。或者您可以像普通控制台应用程序一样使用它,而不是尝试使其成为独立应用程序。