You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

const int *ptr中const的作用是什么?测试未发现其限制效果

关于const int* 指针的作用测试说明

你写的const int *p_int;,本质是指向常量整数的指针,它的限制是:不能通过这个指针修改指向地址里存储的值,但指针本身可以自由切换指向的地址。你的测试代码刚好没触碰到这个限制,所以才觉得const没起作用。

触发const限制的测试操作

如果尝试通过p_int直接修改指向的内容,编译器会报错,这就是const生效的表现:

#include <stdio.h>

int main() {
  const int *p_int;
  int x = 5;
  p_int = &x;
  // 下面这行代码会编译报错,因为const限制了不能通过p_int修改指向的值
  *p_int = 6; 
  return 0;
}

你代码里的操作为什么合法

  • p_int = &x; 和 p_int = &y;:这是修改指针本身的指向,const int* 不限制指针自身的指向变更,所以没问题。
  • y = 3;:这是直接修改变量y的值,没有通过指针p_int操作,完全绕开了const的限制,当然允许。

补充不同const指针的区别

如果想限制指针本身不能修改指向,可以用int* const p_int;(指针本身是常量,不能改指向,但可以通过指针修改内容);如果想同时限制两者,用const int* const p_int;(既不能改指针指向,也不能通过指针改内容)。

内容的提问来源于stack exchange,提问作者bobby wang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 01:42:07