【发布时间】:2015-06-25 20:45:11
【问题描述】:
我开始学习 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 = &var一样。在这种情况下,*不是运算符,只是类型的一部分。 -
使用
int* ptr而不是int *ptr会更容易理解。 -
@DavidSchwartz 不幸的是,这违反了语言 -
int* ptr, a;变得混乱,a是指针吗?而int *ptr, a;很明显不是。 -
int *ptr = NULL;只是int *ptr; ptr = NULL;的简写 -
@Slava 无论哪种方式都令人困惑。这是一个更糟糕的选择。
标签: c++ null-pointer