C语言*中const用法

C语言 中const代表着”不可变“,基本和常量一样不可修改,但是应用场景不一样。

一.应用在变量

const char a=‘A’;
a=‘B’;

//错误,变量a的值不可以修改。
此时代表变量a值不可改变,任何企图修改a变量值的语句(例如a=20;)都会报错。

二.应用在指针
1)应用在*左边

const char *p;
char const *p;

以上两条语句作用一样,都是表示指针指向的变量值不可以修改,但指针可以修改。
例如1;

const char *p=‘A’;
char *q;
*p=‘B’; //错,指针指向的值不可以修改。
p=q; //对,指针值可以修改

2)应用在*右边

char *const *p;

表示指针值(指针指向的位置)不可以改变,但指针指向的值可以改变。
例如2:

char *const *p=‘A’;
char *q;
*P=‘b’; // 对,指针指向的值可以修改。
p=q; //错误,指针值不可以修改。

总之,const在左边,表示指针指向的值不可以修改。const在右边,表示指针值(也就是指针指向的位置)不可以修改。

三.应用在函数参数
例如3:

strcat(char *a,char const *b);

将参数b指向的字符串,添加到参数a字符串的末尾。
此时,参数a值可以改变,但是表示参数b值不可改变

### C语言 `const` 关键字的使用 #### 定义常量变量 `const` 关键字用于声明不可修改的变量,即一旦初始化后其值就不能再被改变。这种方式不仅提高了程序的安全性和可靠性,还增强了代码的可读性。 ```c // 声明整型常量 pi const int PI = 3; int main() { // 尝试更改PI将会导致编译错误 // PI = 4; // 错误 printf("The value of PI is %d\n", PI); return 0; } ``` 此段代码展示了如何利用 `const` 来创建一个名为 `PI` 的常数并赋初值为3,在后续操作中试图重新给它赋新值会被视为非法而阻止[^2]。 #### 函数参数中的应用 当函数接收指针作为输入时,如果不想让该函数内部修改指向的数据,则可以在形参列表里加上 `const` 修饰符: ```c void printArray(const int *arr, size_t length) { for (size_t i = 0; i < length; ++i){ printf("%d ", arr[i]); } } int main(){ int numbers[] = {1, 2, 3}; printArray(numbers, sizeof(numbers)/sizeof(*numbers)); return 0; } ``` 这里通过指定 `printArray()` 接收的是指向 `const int` 类型数据的指针,从而防止了任何可能意外篡改数组内容的情况发生。 #### 返回值上的作用 返回局部对象或结构体成员时不希望外部能够随意改动的话也可以采用同样的方式处理: ```c struct Point { double x,y; }; class Shape{ public: const struct Point& getOrigin() const { return origin_; } private: struct Point origin_={0.,0.}; }; ``` 上述例子表明即使是从类实例获取到的对象引用也受到保护机制约束,不允许外界轻易变更属性值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值