我了解到指针指向内存地址,因此我可以使用它来更改在该地址处设置的值。所以像这样:
int *pPointer = &iTuna;
pPointer
这里有iTuna
的内存地址。所以我们可以使用 pPointer
来改变 iTunes
的值。如果我打印 pPointer
内存地址被打印,如果我打印 *pPointer
然后 iTuna
的值被打印
现在看这个程序
char* pStr= "Hello !";
cout<< pStr << endl;
cout<< *pStr << endl;
system("PAUSE");
return 0;
这里有很多我不明白的东西:
在“你好!”中每个字母单独存储,一个指针保存一个内存地址。那么
pStr
是如何指向所有字母的。此外,当我打印出
pStr
时,它会打印出 Hello !,而不是内存地址。当我打印出
*pStr
时,它只打印出 H 而不是pStr
指向的所有内容。
我真的无法理解,这些是我的担忧。我希望有人能向我解释这个广告是如何运作的,帮助我理解
最佳答案
"Hello !"
是 array 类型char const[8]
和值{ 'H' , 'e', 'l', 'l', 'o', ' ', '!', 0
。pStr
是指向其第一个元素的指针;它的最后一个元素的值为0
。iostreams 库中有一个针对
char const *
参数的重载,它将参数视为指向数组第一个元素的指针并打印每个元素,直到它遇到一个零。 (口语中的“以空字符结尾的字符串”。)取消引用指向数组第一个元素的指针会得到数组的第一个元素,即
'H'
。这与pStr[0]
相同。
关于c++ - 通过指针制作字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798233/