指针的const修饰

本文深入探讨了C++中的指针概念,包括常量指针、指针常量和常量指针常量。通过实例展示了它们的区别,常量指针不允许改变所指变量的值,但可以改变指针本身指向;指针常量则指针指向的地址不可变,但可以修改该地址存储的值;而常量指针常量两者皆不可变。理解这些概念对于掌握C++指针操作至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1、常量指针

2、指针常量

3、常量指针常量


1、常量指针

指向常量的指针

指针指向的值不能修改,但是指针的值可以修改
const放在最前面时,它修饰的就是*p,那么*p就不可变
就是p的指向可变,指向对象的内容不可变

例如:
const int *p1 = &a;
此时指针p1指向的值不能修改,但是该指针可以指向其他的地址

可以改变p 不可改变*p

#include <stdio.h>
int main()
{
    int a = 3;
    int b = 4;
    const int *p;
    //或可以写成int const *p;
    p = &a;
    printf("%d",*p);
    //此为输出a的值 3
    p = &b;
    printf("%d",*p);
    //此为输出b的值 4
    return 0;
    //p可以改变所指向的地址,但不能改变*p所指向内容的值
}

 编写实例:(const和指针类型名可以互换,二者是等价的)
const char *s;
char const *s;

2、指针常量

指针是常量

此时const修饰的是p,所以p中存放的单元的地址不可变,而存放单元中的内容可变
就是p的指向不可变,p所指向的内存单元的内容可变

例如:
int *const p1 = &a;
此时指针p1只能指向a,不能指向其他的地址,但是p1可以修改a的值

可以改变*p 不能改变p

#include <stdio.h>
int main(void)
{
    int a = 3;
    int b = 4;
    int *const p = &a;
    //赋了初值后的p指向就不可变了
    printf("%d",*p);
    //输出值为a的值 3
    *P = 5;
    //可以改变*P指针的值来改变数的值
    printf("%d",*p);
    //输出值为*P所赋的值 5
    printf("%d",a);
    //此时可发现*P所指向的a的值也发生了变化 5
    return 0;
}

编写实例:
char*a = "hello";
char*const p = a;

3、常量指针常量

指向常量的常量指针

这里*p和p都被修饰了,那么p中存放的内存单元内存单元中的内容不可变

例如:
const int *const p1 = &a;
p1指向的地址不能修改,指向值也不能修改(p1只能指向a且不能修改a的值)

*p和p都不能改变

编写实例:
const char*a = "hello";
const char*const cpc;
char const*const pcc;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值