C语言(const的指针定义的区别)

cs 复制代码
int a = 10, b = 20;
int* p1 = &a;//普通指针
const int* p2 = &a;//等价于int const* p2 = &a;const在左,修饰指向内容
int* const p3 = &a;//const在右,修饰指针本身
const int* const p4 = &a;//const左右都有,修饰指向内容和指针

一、没有 const

cs 复制代码
int* p1 = &a;

p1 是指向 int* 类型的指针

指针 p1 可以随意指向其他地址,指向的内容也可以修改;

cs 复制代码
*p1=100;//内容可改
p1=&b;//指针指向可改

二、const 在 * 左

cs 复制代码
const int* p2 = &a;

p2 是指向 const int 类型的指针 → 指针指向的内容是只读的;

指针 p2 可以指向其他地址,指向的内容不可改

**应用:**函数参数传递时,保护传入的变量不被修改

cs 复制代码
*p2=100;//内容不可改,error
p2=&b;//指针指向可改

三、const 在 * 右

cs 复制代码
int* const p3=&a;

p3 是指向 int* 类型的 const 指针→ 指针本身是只读的

指针 p3 不可以指向其他地址,但是可以通过 p3 修改指向内容

**应用:**固定指向某个核心变量,避免误指向其他地址

cs 复制代码
*p3=100;//内容可改
p3=&b;//指针指向不可改,error

四、const 在 * 两侧

cs 复制代码
const int* const p4=&a;

p4 是指向 const int* 类型的 const 指针→ 指针本身是只读的和指针指向的内容是只读的

指针 p4 不可以指向其他地址,也不可以通过 p4 修改指向内容

应用:完全只读,适用于全局常量指针

cs 复制代码
*p4=100;//内容不可改,error
p4=&b;//指针指向不可改,error

五、记忆口诀

  • const 在左,内容锁:const int* p → 内容不能改,指针能跑;
  • const 在右,指针锁:int* const p → 指针不能跑,内容能改;
  • 左右都有,全上锁:const int* const p → 内容和指针都不能动。
相关推荐
木木_王几秒前
嵌入式Linux学习 | 数据结构 (Day05) 栈与队列详解(原理 + C 语言实现 + 实战实验 + 易错点剖析)
linux·c语言·开发语言·数据结构·笔记·学习
Joseph Cooper1 小时前
Linux HID 子系统实战:从虚拟键盘到 input 事件上报
linux·c语言·计算机外设
啧不应该啊2 小时前
Day1 python与c宏观区别
c语言·开发语言
OneT1me2 小时前
CVE-2026-31431 的C语言版本
c语言·开发语言·安全威胁分析
爱编码的小八嘎3 小时前
C‘语言完美演绎9-11
c语言
一行代码一行诗++4 小时前
C语言中if的使用
c语言·c++·算法
来生硬件工程师4 小时前
【程序库】 MutiButton 按键库
c语言·笔记·stm32·单片机·mcu·嵌入式实时数据库
wljy14 小时前
牛客每日一题(2026.4.30) 整数域二分
c语言·c++·算法·蓝桥杯·二分
多看多敲多思考4 小时前
华润微CS32ME10 MCU使用教程(1)---CS32ME10之GPIO使用
c语言·stm32·单片机·嵌入式硬件·mcu
Navigator_Z4 小时前
LeetCode //C - 1030. Matrix Cells in Distance Order
c语言·算法·leetcode