c - 为什么即使我在 C 中使用 "const"我的数据也没有受到保护?

标签 c arrays constants

<分区>

#include <stdio.h>

int main() 
{
    const int marbles[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int *ptr = marbles;
    *ptr = 100;
    printf("%d \n", marbles[0]); // output is "100"

}

我使用 const 来保护数组。所以我认为 int *ptr = marbles 会导致错误。否则通过使用指针,它将使用户能够更改数组中的数据。但令人惊讶的是输出是“100”。当我使用 const 时,C 是否应该保护数组不受任何类型的方法影响?

最佳答案

当我尝试编译程序时,它显示了这个警告。所以我想当你初始化指针时,const 关键字就失去了作用。

In function ‘main’:
try.c:6:16: warning: **initialization discards ‘const’ qualifier from pointer** target type [enabled by default]
     int *ptr = marbles;

关于c - 为什么即使我在 C 中使用 "const"我的数据也没有受到保护?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38821133/

相关文章:

c - 使用除法征服的矩阵乘法

将 x86 汇编代码片段转换为 C

javascript - 无法读取 if 语句中未定义的属性 'replace'

c++ - C++ 中的 case 表达式返回错误

php - 如何创建/使用基于 namespace 的 PHP 自动加载器来加载类以及常量和函数?

c - 将类型传递给 C 宏

c - 在 C 中实现缓冲区数组的最佳方法(线性数组与分散数组)

javascript - 递归函数如何将消息保存在数组中?

java - 返回该对象之前增加对象中的静态变量

c - 函数的参数是指向声明为 const 的参数的指针,如何处理?