c++ - 通过指针制作字符串

标签 c++ string pointers

我了解到指针指向内存地址,因此我可以使用它来更改在该地址处设置的值。所以像这样:

int *pPointer = &iTuna;

pPointer这里有iTuna的内存地址。所以我们可以使用 pPointer 来改变 iTunes 的值。如果我打印 pPointer 内存地址被打印,如果我打印 *pPointer 然后 iTuna 的值被打印

现在看这个程序

    char* pStr= "Hello !";
cout<< pStr << endl;
cout<< *pStr << endl;
system("PAUSE");
return 0;

这里有很多我不明白的东西:

  1. 在“你好!”中每个字母单独存储,一个指针保存一个内存地址。那么pStr是如何指向所有字母的。

  2. 此外,当我打印出 pStr 时,它会打印出 Hello !,而不是内存地址。

  3. 当我打印出 *pStr 时,它只打印出 H 而不是 pStr 指向的所有内容。

我真的无法理解,这些是我的担忧。我希望有人能向我解释这个广告是如何运作的,帮助我理解

最佳答案

  1. "Hello !"array 类型 char const[8] 和值 { 'H' , 'e', 'l', 'l', 'o', ' ', '!', 0 pStr 是指向其第一个元素的指针;它的最后一个元素的值为 0

  2. iostreams 库中有一个针对 char const * 参数的重载,它将参数视为指向数组第一个元素的指针并打印每个元素,直到它遇到一个零。 (口语中的“以空字符结尾的字符串”。)

  3. 取消引用指向数组第一个元素的指针会得到数组的第一个元素,即 'H'。这与 pStr[0] 相同。

关于c++ - 通过指针制作字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11798233/

相关文章:

c++ - 无法从头文件C++访问主文件中的函数

c++ - c++中字符串类型是如何创建的?

c++ - 使用具有不同参数的 Boost Tokenizer escaped_list_separator

C++ 指针容器

c - 在理解将 char* [] 传递给函数方面需要帮助

c++ - 奇怪的模板结构定义

c++ - 一个 vector 在 2500 万个 vector 中的查找距离

c - 赋值从指针生成整数

c++ - 如何打印数组中的回文数和质数

javascript - 使用占位符和替换对象格式化 JavaScript 字符串?