小解const与指针

C++中引入关键字const.我们一般认为是“常的”。而这种“常的”可以增加程序的安全性、可读性、可维护性。


1、普通变量与const——符号常量

 在C语言中采用编译命令: #define PI 3.14 就是定义符号常量PI,其值是3.14.内部执行机制是编译前进行替换,不通过编译器的语法检查,容易引入错误。

  在c++中上面的形式是:const float PI=3.14。与编译命令不同,此定义常量的方法是正常语句,不是预编译命令,需要通过编译器的编译,提高了程序的安全性。


一、定义形式相同

符号常量

#include<iostream>

using namespace std;

void main()

{

const int x=10;

  //与上面的定义等价:int const x=10

      char const name[]="小小小";

//x=10,进行赋值提示错误

       //cin>>name;同样出错

cout<<x<<'\t'<<name<<endl;

}

符号引用常量

#include<iostream>

using namespace std;

void main()

{

int x=10;

int y=22;

         int z=23;

int rz=z;

cout<<"z="<<z;

cout<<"rz="<rz;

rz=23;

cout<<"rz=";


const int &rx=x;

int const &ry=y;   //两种定义方式相同

cout<<"x="<<x<<'\t'<<"rx="<<rx<<endl;

x=100;

cout<<"x="<<x<<'\t'<<"rx="<<endl;

cout<<"y="<<y<<'\t'<<"ry="<<endl;

//rx=200,赋值出错

}


小解:引用常量不可以通过改变引用改变它所“应用的变量的值”。

2、符号常量指针与符号指针常量有区别

1)const<类型名>*<指针变量名>

如:const int *p;

我们常常定义这种形式为“符号常量的指针变量”。

#include<stdlib.h>
using namespace std;


void main()
{
int x = 10;
int y = 20;
const int *p;
p = &x;
cout << "x=" << x << '\t' << "*p" << *p << endl;
x = 200;
cout << "x=" << x << '\t' << "*p" << *p << endl;
/*//*p = 230;出错无法通过*p改变x的值
cout << "x=" << x << '\t' << "*p" << *p << endl;*/
p = &y;
cout << "y=" << y<< '\t' << "*p" << *p << endl;
const int z = 40000;
p = &z;
cout << "z=" << z << '\t' << "*p=" <<*p<< endl;
}

小解:常量指针是一个指针变量,它可以指向相应类型的不同变量,无法通过该指针变量的取*运算修改他所指向的变量值。


2)<类型> * const<指针常量名>=&<以定义的同类型变量>

我们常叫做符号指针常量


#include<iostream>
#include<stdlib.h>
using namespace std;


void main()
{
int x = 10;
int y = 20;
int *const p = &x;
cout << "x=" << x << '\t' << "*p=" << *p << endl;
x = 200;
cout << "x=" << x << '\t' << "*p=" << *p << endl;
*p = 2200;//可以通过指针常量改变它所指向的变量的值
cout << "x=" << x << '\t' << "*p=" << *p << endl;
//p = &y;   试图将指针常量指向另一个变量,编译通不过
//cout << "y=" << y<< '\t' << "*p" << *p << endl;
system("pause");
}

小解:通过该指针常量取*运算修改它所指向 的 变量值,但是不允许该指针常量指向另一个变量或常量。















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值