cc legal.c > ./a.out 0 如果我将语句 int *d=0;-6ren">
gpt4 book ai didi

c++ - 在指针变量中存储非零的整数常量

转载 作者:太空狗 更新时间:2023-10-29 23:42:46 24 4
gpt4 key购买 nike

int main()
{

int *d=0;
printf("%d\n",*d);

return 0;
}

这很好用。

>cc legal.c
> ./a.out
0

如果我将语句 int *d=0; 更改为 int *d=1;我看到了错误。

cc: "legal.c", line 6: error 1522: Cannot initialize a pointer with an integer constant other than zero.

所以很明显它只允许零。我想知道当我们执行此 int *d=0 时内存内部发生了什么,这使它成为有效的语法。

我只是出于好奇才问这个问题!

最佳答案

令我惊讶的是,您在运行代码时没有遇到 SEGFAULT。 printf 语句中的 *d 取消引用指针。不过,为了回答您的问题,C++ 允许将 0 作为任何对象的默认初始值设定项,这就是为什么它可以用于将指针初始化为 null(0 和 null 是相同的)。值为 1 时,您要求编译器将整数转换为指针,这需要显式转换。

关于c++ - 在指针变量中存储非零的整数常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2477160/

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