gpt4 book ai didi

c++ - 将指针设置为零是否等同于将其设置为 NULL?

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

我在网上搜索过,但找不到可靠的答案。什么会

someclass* ptr = 1;
char* charptr = 2;

或将它们分配给任何其他整数均值?

如果我在使用指针(对于 native 数据指针和类指针)之前不对其进行初始化,会发生什么情况?

最佳答案

将指针设置为 0 等同于将其设置为 NULL。然而,这仅适用于常量表达式 0,即编译时零值。尝试将指针设置为运行时零值不能保证产生空指针

int *pi = 0; // Initializes a null pointer
char *pc = 2 - 2; // Initializes a null pointer
short *ps = sizeof *pc - 1; // Initializes a null pointer

int x = 0;
double *pd = (double *) x;
// Implementation-defined, not guaranteed to produce a null pointer

您可以更详细地探讨此事C FAQ

回答问题的第二部分:

将任何其他整数(文字/常量 0 除外)分配给指针是非法的。您的初始化(或分配)都不会编译。这在 C 和 C++ 中都是非法的,尽管 C 编译器历来在这方面更允许,以警告响应而不是拒绝编译代码。

此外,在 C++ 语言中,处理指向类类型的指针的方式没有区别。指向类类型的指针仍然被视为标量类型,并且在这方面的行为与任何指向基本类型的指针相同。

关于c++ - 将指针设置为零是否等同于将其设置为 NULL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11291518/

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