gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:06:22 25 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 是一个整数。那么这并没有违反规则?

谢谢。

最佳答案

巴拉克·马诺斯已经在他的评论中指出了这一点:

如果要将指针设置为文字值,则需要先将文字值转换为相应的指针类型。

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

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

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

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

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

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