gpt4 book ai didi

c - 通过 const 限定符保护变量的数据是没有用的!!!?

转载 作者:行者123 更新时间:2023-12-02 05:29:07 25 4
gpt4 key购买 nike

#include<stdio.h>

int main()
{
const char const_cvar1 = 'X';

const char* ptr_to_const_char = &const_cvar1;

// Simply a typecast of "ptr to a const char" to a "ptr to char" disables security !!!
*(char *)ptr_to_const_char = 'S';
printf("\n Value of const char changed from X to : %c \n", const_cvar1);

return 0;
}

输出:-

const char 的值从 X 更改为 : S

我想知道我们是否永远不能依赖 C 中的 const 限定符?是事实吗?

最佳答案

它是 C。你可以做很多愚蠢的事情,导致未定义的行为,依赖于编译器/平台等。

抛弃 const 修饰符就是其中之一。您可以这样做,但您无法保证结果会是什么。

您甚至可以将其转换为任何东西,风险自负。

 *(float *)ptr_to_const_char = 2.18;

但是,const 并不是没有用的。

  • 它提供文档,程序员阅读指针声明为 const 的代码可以假设他可以/不应该修改指针指向的内容
  • 它可以让编译器做进一步的优化

请记住,C 不会保护您免受您自己或他人的侵害,它还使您能够不遵守类型系统。

关于c - 通过 const 限定符保护变量的数据是没有用的!!!?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6138968/

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