指针与常量修饰符const

    const 和指针一起使用,可以归结为三种:

一、指向常量的指针

二、常指针

三、指向常量的常指针

下面依次举例说明:

1. 指向常量的指针:

将指针声明前加上const,使指向的对象为常量,而不是指针为常量。该类指针可以不用初始化。

需要注意的是,该类指针可以指向常量,也可以指向变量。从指针的角度看,它所指向的是常量,通过该指针不能修改它所指向的数据(错误类型是 不能给常量赋值 )。

例如:

int _tmain(int argc, _TCHAR* argv[])
{
	int a=1,b=2;
	const int c=3;
	const int *pi;
	pi=&a;
//	*pi=10;
	a=10;
	pi=&c;
	cout<<*pi<<endl;
//	c=10;
	getchar();
	return 0;
}

 

*pi=10 错误:不能给常量赋值; c=10的错误也是:不能给常量赋值。pi可以指向 变量a 也可以指向 常量c。

 

2.常指针:

要把指针本身声明为常量,采用运算符* const 。该指针称为常指针,必须进行初始化。指针本身为常量,一旦初始化后,不能再指向别的数据。但通过它可以修改指向的数据。实际上,该类指针只能指向变量,而不能指向真正的常量。

例如:

int _tmain(int argc, _TCHAR* argv[])
{
	int a=1,b=2;
	const int c=3;
//	int * const pi=&c;
	int * const pi=&a;// initialize at the statement.
	*pi=10;
	cout<<*pi<<endl;

	getchar();
	return 0;
}


 

 其中int* const pi=&c; 会引起错误(初始化,无法从const int * 转化为 int * const

3.指向常量的常指针:两个目标都是常量,必须进行初始化。该类指针可以指向常量,也可以指向变量。不能通过该指针修改它所指向的数据。初始化后也不能让它指向其他的数据。

int _tmain(int argc, _TCHAR* argv[])
{
	int a=1,b=2;
	const int c=3;
	const int * const pi=&c;
	const int * const pii=&a;
//	*pi=10;
	cout<<*pi<<endl;
	cout<<*pii<<endl;
	a=10;
	cout<<a<<endl;

	getchar();
	return 0;
}

*pi =10;错误(不能给常量赋值) pi可以指向常量c,也可以指向变量a,但都不能通过*p来改变值,可以改变变量a的值。

 

 

 


 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值