c - 为什么我可以取消引用和修改 `int * const` 指针?

标签 c pointers

<分区>

我知道指针有一个地址和包含地址的内容单元格。 那么下面代码中的指针会发生什么:

int a=5;
int* const ptr=&a;
*ptr=6;

ptr持有的地址是不变的,那么ptr指向的值怎么能改变呢?

最佳答案

int *const ptr = &a;

这里的ptr是一个常量指针,所以你不能修改这个指针指向的位置。但是您可以更改指针指向的位置中存储的值。

所以

*ptr = 6;

会将变量a的值修改为6

什么是不允许的是与现有代码一起说你有

int b=5;

你也是

ptr = &b;

那么你肯定会得到一个错误,指出常量指针正在指向其他内存位置。

关于c - 为什么我可以取消引用和修改 `int * const` 指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29230908/

相关文章:

c++ - 扩展宏进行调试?

C 程序 我想知道是否有办法简化我的 dayofyear 程序?

c - 杀死线程和子线程,杀死后不会崩溃

C++ 现代字符串指针

C:删除句子中的空格;抛出异常:写访问冲突

c - 使用中点法积分

c - 指向二叉搜索树节点的双指针

pcap_loop 的最后一个参数中的编译器警告。指向不同大小的整数

c - 为什么下面的程序输出是 5,而不是 4?谁能解释一下?

C语言: Newb translating code from javascript to C,代码包含malloc、strncpy、指针