gpt4 book ai didi

C - int *p; 是什么意思p=15;做?

转载 作者:行者123 更新时间:2023-11-30 21:15:25 29 4
gpt4 key购买 nike

这两个代码示例有什么区别?当我打印变量 p 时,它会打印指定的值,如下所示。

int *p;
p = 51;
printf("%d",p);

Output: 51

当我尝试分配p=15时,我是否将RAM中的内存地址“15”作为指针p的指针?当我尝试添加 int c = 5 +p; 时,它给出的输出为 71。为什么我会得到 71?

我以为内存地址“15”可以存储操作系统、程序等任何信息。但为了精确,它准确地存储了int。虽然我更改了值 p = 150; 它给出了 int 。这怎么可能?幕后发生了什么?实在是看不懂。

最佳答案

您的代码非法。从形式上来说,它不是 C。C 语言禁止在没有显式强制转换的情况下将整数值分配给指针类型(常量 0 除外)

你可以做到

p = (int *) 51;

(具有实现定义的效果),但你不能这样做

p = 51;

如果您的编译器允许后一种变体,则它是编译器特定的扩展,与标准 C 语言无关。

通常,这样的赋值使p指向内存中的地址51

最重要的是,在 printf 中使用 %d 格式说明符打印指针值是非法的。在使用特定于整数的格式说明符之前,请使用 %p 或将指针值转换为正确的整数类型。

关于C - int *p; 是什么意思p=15;做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30743498/

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