小编sra*_*thi的帖子

const int*ptr = 500;它存储的确切位置

我知道,const int *ptr我们可以更改地址但不能更改值.即,ptr将存储在读写部分(堆栈)中,并且对象或实体将存储在数据分段的只读部分中.因此,我们可以更改指针指向的地址ptr,但不能更改常量对象.

int main()
{
  const int *ptr=500;
  (*ptr)++;
  printf("%d\n",*ptr);
}
Run Code Online (Sandbox Code Playgroud)

output是将只读位置分配给*ptr

int main()
{
  const int *ptr=500;
  ptr++;
  printf("%d\n",*ptr);
}
Run Code Online (Sandbox Code Playgroud)

没有编译错误,但在运行时输出是"分段错误".

我同意第一个问题,为什么我在第二个中遇到分段错误?它们究竟存放在哪里?

c linux const

1
推荐指数
1
解决办法
212
查看次数

标签 统计

c ×1

const ×1

linux ×1