发新帖我要提问
12
返回列表
打印
[经验分享]

C语言指针--指针中的const

[复制链接]
楼主: 木木guainv
手机看帖
扫描二维码
随时随地手机跟帖
21
i1mcu| | 2025-3-15 16:40 | 只看该作者 回帖奖励 |倒序浏览
int const *p;:与 const int *p; 相同,指针 p 指向的内容是 const 的,不能通过 p 修改指向的内容,但 p 本身的值可以改变。

使用特权

评论回复
22
sesefadou| | 2025-3-15 17:09 | 只看该作者
在不需要保护数据或地址的场景下,应省略 const 以简化代码。

使用特权

评论回复
23
yeates333| | 2025-3-15 17:48 | 只看该作者
使用 const int *p; 可以保护数据不被意外修改,适用于需要读取但不需要修改的数据。

使用特权

评论回复
24
vivilyly| | 2025-3-15 19:00 | 只看该作者
修改const修饰的变量或指针可能导致未定义行为,应避免此类操作

使用特权

评论回复
25
nomomy| | 2025-3-15 19:37 | 只看该作者
当一个指针被声明为const时,这意味着指针本身的值(即它所存储的地址)不能被修改。但是,通过这个指针可以修改它所指向的数据

使用特权

评论回复
26
yeates333| | 2025-3-15 19:59 | 只看该作者
当指针被声明为常量指针(int *const p)时,必须在声明时进行初始化,因为之后无法修改指针的值

使用特权

评论回复
27
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;
}

使用特权

评论回复
28
lzbf| | 2025-3-15 21:20 | 只看该作者
局部 const 指针必须显式初始化。

使用特权

评论回复
29
alvpeg| | 2025-3-15 21:52 | 只看该作者
使用 int *const p; 可以保护指针本身不被修改,适用于需要固定指向某个地址的情况。

使用特权

评论回复
30
uptown| | 2025-3-16 12:17 | 只看该作者
使用 const 指针可以增加代码的可读性和安全性,因为它清楚地表明了指针的意图和限制。

使用特权

评论回复
31
wengh2016| | 2025-3-16 13:04 | 只看该作者
指针 p 的地址是不可变的,但可以通过 p 修改它指向的数据。

使用特权

评论回复
32
51xlf| | 2025-3-16 13:27 | 只看该作者
函数参数中使用 const 指针,确保函数内部不会修改传入的数据。

使用特权

评论回复
33
pmp| | 2025-3-16 13:52 | 只看该作者
p 是一个 const 指针,即 p 本身的值(即指针的地址)不能被修改,但 p 指向的内容可以被修改。

使用特权

评论回复
34
qiufengsd| | 2025-3-16 14:05 | 只看该作者
const int *p;:指针 p 指向的内容是 const 的,不能通过 p 修改指向的内容,但 p 本身的值可以改变。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则