C语言const关键字
- C语言之const关键字
- 1、什么是const?
- 2、const的用法
- 2.1、const作常量的修饰符例程1
- 2.2、const修饰函数的参数例程2
- 3、const与指针变量的搭配
- 3.1、指针与const的应用例程
- 3.2、指针与const的应用延申二级指针
- 4、结束语
C语言之const关键字
前言:
为了理解const的作用,可以把它比作一个箱子的锁;当我们自己使用箱子的时候,可以正常使用。
当我们不想给别人想使用箱子时,就上一把锁,那么别人就拿不到箱子里的东西,使得东西安全的放在箱子里。
/知识点汇总/
1、什么是const?
概念:
const是用来限定一个变量不允许被改变的修饰符
作用:
被const关键字所修饰的变量,它的值不能被改变,在整个作用域中都保持固定。
注意:
const — 修饰变量,这个变量就被称为常变量,使得变量不能被修改了,但本质上仍然是变量
2、const的用法
主要分为两类:
a、const作常量的修饰符
b、const修饰函数的参数
2.1、const作常量的修饰符例程1
修饰格式:
关键字 + 数据类型 + 变量名 + 变量值
如:const int age = 10;
说明:const是用来限定一个变量不允许被改变的修饰符,被const关键字所修饰的变量,也为不能被改变的值。
注意:在创建常量时候必须要设置它的初始值,举个例子:
const dobule PI = 3.14159; //正确的声明方式
const int age; //错误的声明方式
#include <stdio.h>
//const 修饰定义的常变量就不可改变值
int main()
{
int a = 10;
printf("a = %d\n",a);
a = 50;
printf("a = %d\n", a);
const int b = 10;//b 就是被const修饰的常变量
//表达式必须是可修改的左值
//但本质上b还是一个变量,只是相当于加了限制条件/属性
//const int 在C++里等价于常量
printf("b = %d\n", b);
b = 100;//报错,因为被const修饰的变量就不可改变了,故b = 10
printf("b = %d\n", b);
return 0;
}
如图所示:
2.2、const修饰函数的参数例程2
回顾上一篇介绍assert关键字中的例程
说明;
const 修饰函数传参的参数时,使得避免参数的返回值错误,使得代码更加的优化完善,减少Bug的出现。
#include <stdio.h>
#include <assert.h>
#include <string.h>
//size_t --- unsigned int
size_t My_strlen(const char* str)//参数传数组首地址
{
assert(str != NULL);//断言,判断是否传的空地址,及时报错纠正
int count = 0;//计数
//是假就不执行while循环
//是真则执行,函数体
//不断判断后加加(后置++,先用后加),数组元素是否为字符串结束标志位'\0'
while (*str != '\0')
{
str++;
count++;
}
return count;
}
int main()
{
char arr[] = "hello bit!!!";
int len = My_strlen(arr);
printf("%d\n", len);//12
return 0;
}
3、const与指针变量的搭配
注意:
const — 修饰变量,这个变量就被称为常变量,使得变量不能被修改了,但本质上仍然是变量
const 修饰指针变量时:
a、const 如果放在解引用操作符✳的左边,修饰的是✳p,表示指针指向的内容,使得不能再通过指针改变指针的对象了
b、const 如果放在✳的右边,修饰的是指针变量p,使得指针变量不能改变了,同理,指针的对象可修改了
注意的是:
const 修饰的是指针指向的对象,所以当指向一个新的变量,指针又可正常使用了。
即:指针变量本身是不被const约束的
3.1、指针与const的应用例程
注意:代码为了高亮显示,部分地方已去掉了单行注释符//
#include <stdio.h>
int main()
{
int a = 10;
int* pa = &a;
*pa = 20;
printf("%d\n",a);
const int a = 10;
a = 15;//报错---被const修饰了
printf("%d\n", a);//10
int* pa = &a;
*pa = 20;
printf("%d\n", a);//20----当通过指针可以改变a,但有违背const语法
const int a = 10;
//a = 15;//报错---被const修饰了
printf("%d\n", a);
//const 修饰指针变量时
const int* pa = &a;
//1.const 如果放在*的左边,修饰的是*p,表示指针指向的内容,使得不能再通过指针改变了
int* const pa = &a;
//2.const 如果放在*的右边,修饰的是指针变量p,使得指针变量不能改变了,同理,指针的对象可修改了
*pa = 20;
printf("%d\n", a);//报错--- 表达式必须是可修改的左值
//注意的是const 修饰的是指针指向的对象
//所以当指向一个新的变量,指针又可正常使用了
//即指针变量本身是不被const约束的
int n = 15;
pa = &n;//把新变量地址给pa
printf("%d\n",n);//15---正常输出
return 0;
}
如图所示:
3.2、指针与const的应用延申二级指针
二级指针const应用— 与一级指针同理:int const * const * const pa; 不常用就不过多赘述了
三级指针等也同理,const的位置约束就不同
4、结束语
相信大家阅读后对const关键字又了新的发现,熟悉后在需要的地方正确的使用,const对程序也会起到关键的作用。提升代码的规范性,变量的功能性等。