我了解到指针指向内存地址,因此我可以使用它来更改该地址处设置的值。像这样:
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
也在指着。
我真的无法理解,这些都是我的担忧。我希望有人能向我解释这是如何工作的并帮助我理解
"Hello !"
is an array类型的char const[8]
和价值{ 'H', 'e', 'l', 'l', 'o', ' ', '!', 0 }
. pStr
是指向其第一个元素的指针;它的最后一个元素的值为0
.
iostreams 库中存在过载char const *
argument,它将参数视为指向数组第一个元素的指针,并打印每个元素,直到遇到零。 (口语中的“空终止字符串”。)
取消引用指向数组第一个元素的指针会得到数组的第一个元素,即'H'
。这与pStr[0]
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)