gpt4 book ai didi

Const 不就是 const 吗?

转载 作者:行者123 更新时间:2023-11-30 21:08:06 24 4
gpt4 key购买 nike

我的问题是为什么变量 a 的值会改变,尽管我已将其声明为 const?抱歉,如果这是一个微不足道的问题。

const int a = 8;
int* ptr = &a;

printf("variable: %d \n", a);
printf("pointer: %d \n", *ptr);

*ptr = 1;
printf("pointer: %d \n", *ptr);
printf("variable: %d \n", a);

输出:8 8 1 1

谢谢,祝你有美好的一天!

最佳答案

您已将 a 限定为 const,但是当您将其地址分配给指针时,这会丢弃 const 的效果>a 现在可以使用 ptr 轻松操作。这很可能会引发未定义的行为。

编译程序时,GCC 会显示警告:

warning: initialization discards ‘const’ qualifier from pointer target type [-Wdiscarded-qualifiers]
int* const ptr = &a;

如果您不想体验这种效果,请将指针变量声明为指向常量的指针。示例:const int* ptr=&a;

关于Const 不就是 const 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40320698/

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