C语言中的const用法

Const是什么?

  const是一个C语言的关键字,它限定一个变量不允许被改变。使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程序也有一些帮助。

 

Const修饰变量

我们可以看到一旦被修饰就不能被赋值改变。

 

 

指针中的const使用

指针是一个变量  指针里面有两个变量一个是指针本身 一个是指针所指的变量如图1 指针本身可以是const,指针所指的变量本身也可以是cost,我们来往下看两种情况的使用与不同指出。const 只适用于C99

 

 

图1

 

1.指针是const情况

表示一旦得到了某个变量的地址,不能指向其他变量

int *const q=&I; //q是const

这个意思是q不能再指向别人了

*q=26; //OK

q++; //ERROR

2.所指的值是const

表示不能通过这个指针去修改那个变量(并不能使得那个变量成为const)

Const int * p=&I

i=26,i++//i可以变

p=&j //p也可以变

*p=26//不能通过地址进行赋值

 

 

Const数组

Const int a[]={1,2,3,4,5,5}

数组变量表明已经是const的指针了,这里的const表明数组的每个单元都是const int

所以必须通过初始化进行赋值

转载于:https://www.cnblogs.com/xhds/p/11089607.html

在C语言中,const关键字用于定义常量,提供只读的变量,一旦初始化,const变量的值不能再被修改。其具体使用方法如下: ### 定义常量 const关键字可以用来定义常量,定义后常量的值就不能被修改。示例代码如下: ```c #include <stdio.h> int main() { const int num = 10; // num = 20; // 错误,不能修改const变量的值 printf("%d\n", num); return 0; } ``` ### 修饰指针 - **const位于`*`的左边**:`const type* name` 和 `type const *name` 这两种形式完全一样,这种情况下const修饰的是`name`指向的对象无法修改,但可以修改指针变量。示例代码如下: ```c #include <stdio.h> int main() { int num = 10; int n = 20; const int* p = &num; // *p = 20; // 错误,无法修改指针变量所指向的对象 p = &n; // 可以修改指针变量 printf("num=%d n=%d *p=%d\n", num, n, *p); return 0; } ``` - **const位于`*`的右边**:`type* const name` 表示指针变量`name`本身是常量,不能修改指针的指向,但可以修改指针所指向的对象的值。示例代码如下: ```c #include <stdio.h> int main() { int num = 10; int* const p = &num; *p = 20; // 可以修改指针所指向的对象的值 // p = NULL; // 错误,不能修改指针的指向 printf("%d\n", *p); return 0; } ``` - **const同时位于`*`的左右两边**:`const type* const name` 表示指针变量`name`本身是常量,不能修改指针的指向,同时指针所指向的对象的值也不能修改。示例代码如下: ```c #include <stdio.h> int main() { int a = 1; const int* const p = &a; // *p = 2; // 错误,p指向的变量的值不能改变 // p++; // 错误,p指向的地址也不能改变 return 0; } ``` ### 修饰函数参数 在函数参数中使用const关键字,可以保护传入的参数不被函数内部修改。示例代码如下: ```c #include <stdio.h> void print_num(const int num) { // num = 20; // 错误,不能修改const参数的值 printf("%d\n", num); } int main() { int num = 10; print_num(num); return 0; } ``` ### 修饰数组 使用const修饰数组时,数组元素的值不能被修改。示例代码如下: ```c #include <stdio.h> int main() { const int arr[3] = {1, 2, 3}; // arr[0] = 10; // 错误,不能修改数组元素的值 for (int i = 0; i < 3; i++) { printf("%d ", arr[i]); } return 0; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值