[经验分享] C语言指针--指针中的const

[复制链接]
4674|48
i1mcu 发表于 2025-3-15 16:40 | 显示全部楼层
int const *p;:与 const int *p; 相同,指针 p 指向的内容是 const 的,不能通过 p 修改指向的内容,但 p 本身的值可以改变。
sesefadou 发表于 2025-3-15 17:09 | 显示全部楼层
在不需要保护数据或地址的场景下,应省略 const 以简化代码。
yeates333 发表于 2025-3-15 17:48 | 显示全部楼层
使用 const int *p; 可以保护数据不被意外修改,适用于需要读取但不需要修改的数据。
vivilyly 发表于 2025-3-15 19:00 | 显示全部楼层
修改const修饰的变量或指针可能导致未定义行为,应避免此类操作
nomomy 发表于 2025-3-15 19:37 | 显示全部楼层
当一个指针被声明为const时,这意味着指针本身的值(即它所存储的地址)不能被修改。但是,通过这个指针可以修改它所指向的数据
yeates333 发表于 2025-3-15 19:59 | 显示全部楼层
当指针被声明为常量指针(int *const p)时,必须在声明时进行初始化,因为之后无法修改指针的值
ccook11 发表于 2025-3-15 20:49 | 显示全部楼层
#include <stdio.h>

int main() {
    int a = 10;
    int b = 20;
   
    // 指向常量的指针
    const int *p1 = &a;
    printf("*p1 = %d\n", *p1); // 输出:*p1 = 10
    // *p1 = 30; // 错误:不能修改指向的常量
   
    // 常量指针
    int *const p2 = &a;
    printf("*p2 = %d\n", *p2); // 输出:*p2 = 10
    *p2 = 30;
    printf("*p2 = %d\n", *p2); // 输出:*p2 = 30
    // p2 = &b; // 错误:不能修改指针本身的值
   
    // 指向常量的常量指针
    const int *const p3 = &a;
    printf("*p3 = %d\n", *p3); // 输出:*p3 = 10
    // *p3 = 40; // 错误:不能修改指向的常量
    // p3 = &b; // 错误:不能修改指针本身的值
   
    return 0;
}
lzbf 发表于 2025-3-15 21:20 | 显示全部楼层
局部 const 指针必须显式初始化。
alvpeg 发表于 2025-3-15 21:52 | 显示全部楼层
使用 int *const p; 可以保护指针本身不被修改,适用于需要固定指向某个地址的情况。
uptown 发表于 2025-3-16 12:17 | 显示全部楼层
使用 const 指针可以增加代码的可读性和安全性,因为它清楚地表明了指针的意图和限制。
wengh2016 发表于 2025-3-16 13:04 | 显示全部楼层
指针 p 的地址是不可变的,但可以通过 p 修改它指向的数据。
51xlf 发表于 2025-3-16 13:27 | 显示全部楼层
函数参数中使用 const 指针,确保函数内部不会修改传入的数据。
pmp 发表于 2025-3-16 13:52 | 显示全部楼层
p 是一个 const 指针,即 p 本身的值(即指针的地址)不能被修改,但 p 指向的内容可以被修改。
qiufengsd 发表于 2025-3-16 14:05 | 显示全部楼层
const int *p;:指针 p 指向的内容是 const 的,不能通过 p 修改指向的内容,但 p 本身的值可以改变。
MintMilk 发表于 2025-4-8 09:17 | 显示全部楼层
指针指向像地图,地址像位置,地图能指向多个位置但不能改变位置。
星闪动力 发表于 2025-4-11 20:16 | 显示全部楼层
const和指针放一起,const放前面表示指针指向的数据不可变,放后面表示指针本身不可变。
未来AI 发表于 2025-4-14 23:19 | 显示全部楼层
指针像地址簿,不能改簿,但能改簿里的内容。
AIsignel 发表于 2025-4-19 13:07 | 显示全部楼层
修饰指针时,const决定是数据不可变还是指针地址不可变。指数据时,数据不能变;指地址时,地址不能变。
IntelCore 发表于 2025-4-22 16:51 | 显示全部楼层
保护数据不变和规定接口不能被更改。
zephyr9 发表于 2025-4-26 08:51 | 显示全部楼层
const变量和指针一旦定义,就不能改变
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部