gpt4 book ai didi

c++ - C++中的空指针声明混淆

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

我开始学习 C++。关于指针,特别是 NULL 指针,我遇到了一些小困惑。根据我的理解,当您声明一个指针并将其设置为指向一个值时,您可以执行以下操作:

    int var = 10;
int *ptr;
ptr = &var;
*ptr = 20;

这会将 var 的值更改为 20。但是当您设置 NULL 指针时,您将执行以下操作:

int *ptr = NULL;

这是否意味着您将 NULL 值分配给 ptr 指向的任何变量而不是地址,因为 * 运算符?我认为 NULL 指针的值(它的地址)为 0,所以根据我的阅读,它指向任何地方。这样做是否更有意义:

int *ptr;
ptr = NULL // or 0?

将不胜感激通俗易懂的解释,我在编写代码和研究时仍在学习所有术语,因此我很乐意解释您使用的任何编程术语。

最佳答案

通过说 int *ptr = NULL; 你是在说“我正在声明一个名为 ptr 的 int 指针,我想指向位置 0(NULL)。这就是它所说的全部内容。

现在,如果您尝试读取或写入 ptr,您将得到未定义的行为,这通常是一个糟糕的地方(比仅仅得到一个错误更糟糕,因为你的程序可能会在其他地方开始出现问题,而你不知道为什么)。但通常,NULL 指针用于表示不应使用它且必须对其进行初始化。

正如大卫施瓦茨所说,

It will be easier to understand if you use int* ptr instead of int *ptr.

这是因为ptr的类型实际上是int*,一个指向整数的指针。声明类型时,* 表示指针。只有在 *ptr = 20 等表达式中使用指针时,* 才表示“取消引用”。

关于c++ - C++中的空指针声明混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31060449/

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