linux c下 const 用法问题。

yfannnnn 2020-11-09 03:51:52
比如 const int xyz[2] = {1,0}; xyz[0] ++肯定不行,我想问的是,如果是内存越界,正好把这里踩了呢?这个地方值会变吗? 是会抛出错误还是值被修改,没有提示?
...全文
162 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2020-11-09
  • 打赏
  • 举报
回复
会修改,不是给予提示。因为const修饰的是xyz数组,不能通过xyz数组去修改,但是其他的变量(指针)是可以修改的,不受限制。const修饰的并不是只读的内存。
qybao 2020-11-09
  • 打赏
  • 举报
回复
给你段代码,跑一下就知道了

int main() {
const int a[] = {1, 2};
int *p = (int*)a;
//a[0]=2;
*p = 2;
printf("%d\n", a[0]);
return 0;
}
「已注销」 2020-11-09
  • 打赏
  • 举报
回复
修改啊,const 只是编译器级的不可修改,实际内存读写权限是系统相关的

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧