Const的用法及作用

const

const全名 Constant意为:常数,常量。
const修饰变量,其作用也在编译阶段,告诉编译器,该变量我私定终身了(Tips:编译四个阶段:1预处理define\include\条件编译等;2编译3汇编4链接),在以后的运行过程中,休的胡来。
const和define功能类似但是它们是有区别的,比如说:作用的阶段,一个在预处理,一个在编译;define定义的就是个常量,而const修饰的实际上是一个变量,只不过它是只读的而已。

一、修饰变量

1.局部变量:
对于const修饰的局部变量,是不允许显示的修改,但是可以通过其他比如指针的方法来修改的。
eg:

vold func(vold)
{
	char arr[2];
	const int a=0;
	arr[2]=1;
	printf("%d\n",a);//a==1
}

2.全局变量
对于const修饰的全局变量来说是不允许修改值的。

二、修饰指针

    int const *p1;//const int *p1等价
    int * const p2;
    const int * const p3;

第一行p1指向的内容只读。
第二行p2本身只读。
第三行p2本身和指向的内容都只读。

三、修饰函数和形参

1.修饰函数:
修饰函数实际上就是修饰返回值,对于返回值是一个变量的,修饰也没有什么意义,大多数用于修饰返回指针类型的函数返回值。

const int* func(void)//表示返回的地址指向的内容只读

接收的话只能用const指针接受,否则编译会出错:

const int* b = func()

2.修饰形参:
这里的作用就比较大了:

//保护源字符串不被修改,若修改src则编译出错。
void fun(const char * src, char * des)
{    
    strcpy(des,src);  
}  

记住一个要点:“姑娘你可以玩,但是不要玩坏了”在这里插入图片描述在这里插入图片描述在这里插入图片描述

桥黑板,画重点:

1.const 作用在编译阶段
2.用 const 修饰的变量,无论是全局变量还是局部变量,生存周期都是程序运行的整个过程
3.用const修饰过的局部变量只是有了静态特性,并没有说它变成了静态变量。
4.const定义的是变量,而define定义的是常量。
5.const修饰指针,以*为中心,const在*左边,则指针指向的数据只读,const在*右边,则指针本身只读,四个字:左数右指。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值