const的声明 指针

本文详细解析了 C++ 中常量指针与指针常量的概念及区别,包括 constint*a 定义为指向常整型数的指针,int*consta 定义为指向整型数的常指针,以及 constint*consta 定义为指向常整型数的常指针。

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

const int a;
int const a;//前两个的作用是一样,a 是一个常整型数
const int *a;//a 是一个指向常整型数的指针(整型数是不可修改的,但指针可以),这里const 修饰的是int,而int定义的是一个整值
int * const a;//a 是一个指向整型数的常指针(指针指向的整型数是可以修改的,但指针是不可修改的),这里const修饰的是 a ,a代表的是一个指针地址

const int * const a ;//a 是一个指向常整型数的常指针(指针指向的整型数是不可修改的,同时指针也是不可修改的)

常量指针与指针常量的区别(转帖)

### C/C++ 中 `const` 关键字用于声明常量指针指针常量的区别及用法 #### 定义与基本概念 在 C 和 C++ 编程语言中,`const` 关键字用来表示不可变的数据。当应用于指针时,它可以有多种含义: - **常量指针 (Pointer to Constant)**:这种类型的指针指向一个其值不能被更改的对象。 ```cpp const int *ptr; ``` - **指针常量 (Constant Pointer)**:这种类型的指针本身是常量,即一旦初始化后就不能再指向其他对象。 ```cpp int *const ptr = &variable; ``` - **双重常量 (Double Const)**:同时指定指针及其所指向的内容都是常量。 ```cpp const int *const ptr = &constant_variable; ``` #### 常量指针的具体说明 对于常量指针而言,这意味着可以通过这个指针访问到的值不可以改变,但指针本身的地址是可以变化的。例如, ```cpp int value1 = 10, value2 = 20; const int *pointer_to_const = &value1; // 下面这行会报错,因为试图修改由 pointer_to_const 所指向的位置上的值 //*pointer_to_const = 30; // 这样做是允许的,因为它只是改变了指针指向的地方 pointer_to_const = &value2; ``` 这段代码展示了如何创建并操作一个指向整数常量的指针[^1]。 #### 指针常量的具体说明 另一方面,如果定义的是一个指针常量,则意味着该指针存储的实际内存位置不会发生变化;然而,通过此指针可以修改其所指向的数据(除非也应用了 `const`)。考虑以下例子: ```cpp int varA = 5, varB = 7; int *const constant_pointer = &varA; // 尝试重新分配给 constant_pointer 是非法的操作 //constant_pointer = &varB; // 错误! // 修改 constant_pointer 指向的数据却是合法的行为 *constant_pointer = 8; ``` 上述片段解释了什么是真正的指针常量以及它们的工作方式[^3]。 #### 双重常量的应用场景 最后一种情况涉及到了两个层面都带有 `const` 的限定符,使得不仅指针本身而且它所指向的目标都不能被改动。这样的设计通常出现在函数参数传递过程中以保护传入的数据不被意外篡改。 ```cpp void exampleFunction(const char *const strPtr){ //strPtr 不可变更,也不能经由 *strPtr 改动字符串内容 } ``` 这种方式确保了即使是在复杂环境中也能维持数据的一致性和安全性[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值