C++ 指针和Const

本文介绍了C++指针中const的基本用法,如指向常量的指针、常量指针及二者结合的情况。还阐述了将指针参数声明为指向常量数据指针的理由,可避免编程错误,使函数能处理const和非const实参,并通过多个例子进行了说明。

C++指针中const的基本用法;

const int * pt;  //指向int型常量的指针,指针可以修改,指针指向的内容不能修改;

int * const pt;  //指向int型数据的常量指针,指针本身不可以修改,指针指向的内容可以修改;

const double * const size; //以上两种的结合,都不可以修改;

 

int func(const int * a, int * b);

将指针参数声明为指向常量数据的指针有两条理由:

  • 可以避免由于无意间修改数据而导致的编程错误;
  • 使用const使得函数能够处理const和非const实参,否则将只能接受非const数据;

假设有两个变量const int * p和int *q,上面这句话的意思是说参数a可以接受p也可以接受q而且可以确保实参在函数内不会被修改,而参数b只能接受参数q;

func(p, q);  //VALID 

func(q,q);   //VALID

func(p,p);   //INVALID

几个简单例子:

1.

int age = 35;

const int * pt = &age;

*pt += 1; //非法, 指针指向const int

age += 1; //虽然不能用*pt修改age,但age本身不是const,可以直接修改;

 

2.

const float g_earth = 9.8

const float *cpg = &g_earth;  //OK

float *pg = &g_earth; //INVALID, g_earth是const类型的,pg是指向非const类型数据的指针,如果g_earth地址赋值给pg,则可以使用pg来修改g_earth地址的值,这使得g_earth的const状态很荒谬,C++是禁止这种情况的;

 

3.

int slot = 3;

int * const finger = &slot;//finger只能指向slot,但可以修改slot的值;

 

4.

double trouble = 2.0E30

const double * const trust = &trouble; //trust只能指向trouble,而且不能用trust修改trouble的值,trust和*trust都是const;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值