实例理解const用法

笔试题,面试题经常考到const ,下面就通过实例对const进行总结。

首先要理解常量指针和指针常量的区别,* (指针)和 const(常量) 谁在前先读谁。

const int *p //常量指针
int const *p //常量指针
int * const p //指针常量
另外const后面 修饰谁,说明它不能改变,const int *p  const 后面是int *p 说明初始化后*p不能改变,int * const p ,const后面修饰的是p说明初始化后p不能改变。

#include<stdio.h>
#include<stdlib.h>
//1.const int *p 限定只能读,不可以改,地址可以移动,可以访问别的账户
//2.int const *p 同1
//3.int * const p 限定不可以查看别人账户,自己的账户可读可写
//4.const int * const p 限定不可以查看别人账户,只能查看自己的账户只能读不能写
//5.int const * const p 同4
void read_all_account(const int *p,int length)
{
	int index;
	for(index=0;index<length;index++)
	{
		printf("%d \n",*p);
		//*p=5000; //error不能给常量赋值
		p++;
	}
}
void read_write_own(int *const p,int modify_data)
{
	printf("read: %d \n",*p);
	*p=modify_data;//修改
	printf("write:%d \n",*p);
	//p++; //error 地址不能改变只能读写自己的账号
}
void read_only_own(const int *const p) //只能读自己的
{
	printf("read: %d \n",*p);
	//*p=10000; //error 不能给常量赋值
	//p++;//error 地址不能改变
}
void main()
{
	int account[5]={100,200,300,400,500};// 五个账户
	read_all_account(account,5); //访问所有的账户
	read_write_own(&account[1],5000);//读写自己的账户以账户1为例
	read_all_account(account,5);//
	read_only_own(&account[2]);//只能读自己的账户,以账户2 为例
	getchar();
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值