gpt4 book ai didi

c++ - 基本 C++ 字符串指针

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:06 24 4
gpt4 key购买 nike

为什么它没有在第 2 行抛出错误?

char *p = "Hello";
p = "Bye";

*p 是变量,所以 p 是变量 *p 的地址。请有人解释一下上面的代码是什么情况?

最佳答案

*p 不是“变量”。 p 是变量,它是一个指针。 C 和 C++ 的声明语法看起来很奇怪,您可以在其中使用与访问变量相同的语法来声明变量。

char *p;

在该声明中,我们声明了 p,而不是 *p,而是将 p 声明为 p *p 需要成为 char

char *p = "Hello";

现在它可能更不直观了,因为 = 右边的东西是 p 的初始值而不是 的初始值*p。这就是 C 和 C++ 的工作方式,并且很容易习惯和理解,即使其左右两侧的含义最初看起来有悖常理。

所以你的例子:

char *p = "Hello";
p = "Bye";

我明白为什么不了解 C 或 C++ 的人可能会认为在第一行和第二行使用 p 的间接级别不同。但实际上在这两行上,p 都是一个指针,文本文字的地址存储在该指针中。

关于c++ - 基本 C++ 字符串指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34838895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com