浅谈const

0.概述

C语言中,const是一个限定符。主要作用是使限定的变量只读,有些教课书把它翻译成“常量”,而我个人更愿意把它翻译成“只读变量”。

const int  a = 10;   //声明 int 型变量a为只读。
int const  b = 10;    //同上面声明方式完全一样,习惯上更倾向于第一种写法

注意:const只读变量必须在声明的同时进行初始化,因为此刻如果不初始化,在后面将无法再次对其赋值。

关于存放位置:

在我们的PC机中,其存放位置和普通变量并无区别,若在main函数中定义,则编译器将其分配在栈中。若其是全局变量,则其存放在静态存储区中。


1.一个经典问题:const int* ptr与int* const ptr的区别?

答:

1)const int* ptr是指向const int的指针,其指向地址中的内容不可改变(*ptr不可修改),而指针本身的指向是可以修改的(ptr可以修改)。

2)int* const ptr是指向int的const指针,其指向地址中的内容可以改变(*ptr可以修改),而其本身的指向是不可以修改的(ptr不可以修改)。

int main(void)
{	
	int a = 10;		
	int b = 11; 
	
	const int* ptr1 = &a;    //将指针指向a
	ptr1 = &b;	         //将指针指向b,没有报错,证明指针的指向可以改变
	
	*ptr1 = 20;              //error!! 试图通过指针改变b的值,指针指向的内容不可修改!
	return 0;
}

int main(void)
{	
	int a = 10;		
	int b = 11; 
	
	int*  const  ptr1 = &a;    //将指针指向a

	*ptr1 = 20;                //可以通过指针修改a的值      

	ptr1 = &b;		    //error!! 试图修改指针的指向
	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值