我知道,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)
没有编译错误,但在运行时输出是"分段错误".
我同意第一个问题,为什么我在第二个中遇到分段错误?它们究竟存放在哪里?