gpt4 book ai didi

c++ - 将整数文字分配给指针?

转载 作者:太空狗 更新时间:2023-10-29 23:40:01 27 4
gpt4 key购买 nike

这个问题可能太糟糕了,但我可以冒险在这里发布这个问题来解决我的困惑。

实际上我的问题是我们只能将地址分配给指针:-

int *p,a;
p = &a; // OK
p = 1; // Error because you cannot assign integer literal to p*

但我们可以将 NULL 分配给 p,例如:

p = NULL;

的确,NULL 是一个值为 0 的宏,在编译器编译这段代码之前,它会被预处理器替换为 0。所以更换后它看起来像

 p = 0;

我知道这意味着 p 没有指向任何东西,但根据规则我们只能将地址分配给指针,但 0 是一个整数。所以这不违反规则?

谢谢。

最佳答案

barak manos 已经在他的评论中指出了这一点:

如果要将指针设置为字面值,需要先将字面值强制转换为对应的指针类型。

NULL 也可以定义为 (void *) 0... 可以隐式转换为任何指针类型。

无论哪种情况,您最终都会得到一个指向文字地址的指针。

但是,您的指针在任何情况下都不会指向包含文字4 的内存。据我所知,如果不首先将该文字值分配给 int,这是不可能的:

int i = 4;
int * p = &i;

关于c++ - 将整数文字分配给指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24203381/

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