为什么char*A能够保持字符串而char A不能?

der*_*y30 5 c++ pointers char

我无法理解为什么字符指针能够容纳字符串.

不应该像角色一样,只能拥有一个角色.

SLa*_*aks 11

假设Char指针指向字符串的开头.
指针本身指向字符串中的第一个字符,使用指针的代码假定字符串的其余部分在内存中跟随它,直到它到达a \0.


MSa*_*ers 9

图片:

+---+---+---+----+------
| A | B | C | \0 | ???
+---+---+---+----+------
  ^
  |---char*
Run Code Online (Sandbox Code Playgroud)

是的,每个char*字符一次只能指向一个字符。但是像 C++ 字符串一样"ABC"作为连续序列存储在内存中,没有空洞,末尾是 0 个字符。因此,如果您有指向“A”++pointer的指针,就会得到指向“B”的指针。而且你也知道你可以做到,++直到找到最后一个'\0'。(这正是strlen("ABC")它的作用 - 使用++3 次来找到 0,所以它返回 3。)