第一天来认识认识指针与const

	int const *p1;
	int * const p2;
	int const * const p3; 
1 先看分析第一个 // 用于只读权限,
用于#include<stdio.h>
#include<iostream>
using namespace std;
int main()
{
 int const a(10);//与 const int val  的效果是一样的
 int b(20);
 int const *p1(&a);//意思就是指向的是常量 也就是指向的值不可改变,但是可以改变指向 这个地方有点问题 a的类型是const 吗 不是 但是为什么不报错那 是c++的                   //权限问题 ,指针在指向的时候不会严格检查类型的const->int 可以,反之报错 
 int const *p2(&b); 
// *p1=2;  会报错的 
// *p2=2;
 p1=&b;
 p2=&a;
 cout<<*p1<<*p2<<endl; 
 return 0; 
 
 }

2 来看第二个 //用于可读可写权限 ,不能跳转到别
int main()
 {
 	int a=10;
 	const int b=20;
 	int *const p1(&a);//指针是常量 也就是指针不可以改变指向,但是可以改变值 
 //	int *const p2(&b);//出错  指向的是 int 但是b是常量 出错 
 //	p1=&b; 报错 
//	p2=&a;报错 
	*p1=1;
	*p2=2;
	cout<<*p1<<*p2<<endl;
 	return 0;
 }
3 第三个 适用于只读权限不能跳转
int main()
 {
 	int a=5;
 	const int b=10;
 	const int * const p1(&a);//常量指针指向 常量 
 	const int * const p2(&b);
// 	*p1=1;
//	*p2=2;
//	p1=&b;  不能修改也不能指向其他的  错误 
//	p2=*a; 
    cout<<*p1<<*p2<<endl; 
  } 

4 综合案例 引用常量的过程
int select(const int & rnum )
{
	return rnum;//return 在这里有强转的功能 
}
int main()
{
	const int num=100;
	int numA=200;
	cout<<select(num)<<endl; 
	return 0;
}

5 来看一个银行有趣的事情
int select(const int & rnum )
{
	//引用const的目的是为了方式修改rnum 
	//rnum=rnum-0.02; 现在是不能修改的 
	int *p=const_cast<int*> (&rnum);//强制把const 属性去掉
	*p=*p-2; 
	return *p;//return 在这里有强转的功能 
}
int main()
{
	const int num=100;
	int numA=200;
	cout<<select(numA)<<endl; //传递的是Numa 这时候已经修改了 
	cout<<numA<<endl; 
	cout<<select(num)<<endl;//已经从外部 修改看看实际上有没有改变
	cout<<num<<endl; //没有改变 原生的const 外部是无法修改的 
	return 0;
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值