关于const的使用

========================================================================

简单来说,const 就是把某一对象设置为常量类型,如字符常量,数组常量,或是指针常量等。那么为什么要

这么做呢?其实很简单,就是防止其被修改,避免造成严重的后果。下面我们对不同的情况作简单论述:

1、字符常量

#include <stdio.h>

//#define number 5  
//此语句功能相当于 const int number = 5;

int main(void)
{
	const int number = 5;  //将number设置为int型的常量,其只能被调用,不能被修改

	//下面语句是错误的,number是常量,不能被赋值修改
	//number = 10; 
	
	printf("number is %d.\n", number);
	return 0;
}


2、数组常量

#include <stdio.h>

#define SIZE 5

int main(void)
{
	const int array[SIZE] = { 1, 2, 3, 4, 5 };  //将array[]声明为int型数组常量,其中SIZE为符号常量
	
	//诸如下述任何改变数组值的操作都是不允许的
	//array[0] = 10;
	
	for (int i = 0; i < SIZE; i++)
		printf("%d ", array[i]);
	
	putchar('\n');
	return 0;
}


3、指向常量的指针

#include <stdio.h>

#define SIZE 5

int main(void)
{
	const int array[SIZE] = { 1, 2, 3, 4, 5 };  
	
	//定义pi为指向const int数值的指针
	const int *pi; 

	pi = array; //数组名即数组地址

	printf("*pi = %d\n", *pi);

	//由于pi指向const int型数据,而const int型数据又不能被修改,所以下述语句不允许
	//*pi = 10;


	//虽然通过pi不能修改指向的数据,但能修改其指向的地址
	pi++;
	printf("*pi = %d\n", *pi);

	return 0;
}

4、指针常量

#include <stdio.h>

#define SIZE 5

int main(void)
{
	int array[SIZE] = { 1, 2, 3, 4, 5 };  
	

	//注意const的位置,此pi为指向array[0]的指针,且其地址不能被修改
	//注意,对于指针常量,必须在声明时就赋值,如下所示
	int  * const pi = array;
	printf("*pi = %d\n", *pi);


	//不能修改指针指向的地址,但可以修改其指向的值
	//pi++; //不允许
	*pi = 10; //允许
	printf("*pi = %d\n", *pi);

	return 0;
}

5、指向常量的指针,同时其自身又是常量

#include <stdio.h>

#define SIZE 5

int main(void)
{
	const int array[SIZE] = { 1, 2, 3, 4, 5 };  
	
	//pi指向const int数据,且其本身的值也是一个常量
	const int  * const pi = array;
	printf("*pi = %d\n", *pi);


	//既不能修改指针指向的地址,也不能修改其指向的值
	//pi++; //不允许
	//*pi = 10; //不允许
	//printf("*pi = %d\n", *pi);

	return 0;
}


总结:

const 可以被很好的用来保护数据,若程序中某一对象不能被修改,那么尽可能的将其设置为const 类型























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值