C++面试题-指针-指针常量与常量指针

本文深入解析C++中指针常量与常量指针的概念,通过实例代码演示两者区别,帮助理解指针不可变性及指向内容的不可变性。同时,针对面试题提供解答思路。

C++面试题-指针-指针常量与常量指针

请用代码来解释以下常量指针与指针常量?

指针常量:指向常量的指针。

const int *p1;

int const *p1;

上述两者等价。

const *p1(或者const int *p1),*p1p1指向的变量的内容,所以p1所指向的内存区的值不能被改变。

#include<iostream>

using namespace std;

int main(){

 int a = 1;

 int b = 2;

// int const *p1=&a;也可以

 const int *p1=&a;//p1保存的是a地址

 cout << p1 << endl;

 p1 = &b;//p1保存的是b地址 

//*p1=4;是错误的

 cout << p1 << endl;

 return 0;

}

常量指针:把指针指向某对象并且不可被改变指向的变量。

int *const p2=&a; // 必须初始化,是因为指针需要保存一个始终不会改变的地址。

const p2p2是一个指针,这个指针一旦指向某对象,就不能改变指向为其他对象,所以是一个固定不能改变地址的指针。

#include<iostream>

using namespace std;

int main(){

 int a = 1;

 int b = 2;

 int *const p2=&a;

 //p2 = &b;错误,不能再指向其他变量 

 cout << *p2 << endl;

 *p2 = 520;//可以改变指向变量的值

 cout << *p2 << endl;

 return 0;

}

 

问:设有如下语句:

int x;

_____

*px=0;

则选择以下哪条语句可将x值设置为0()。

A.int *px;                 B.int *const px=&x;

C.int const px=&x;     D.const int *px=&x;

答:B

分析:

由于*px=0可知,px是一个指针,排除了C选项。由于px需要指向xint *px语句并没有将px指向x的地址,A选项错。

B是一个常量指针,指针本身是常量,即指针指向变量的地址不能被改变(即改变指向的变量),但是所指向变量的值可以被改变,所以B正确。

D是一个指针常量,指向变量的值不能被改变,但是指针指向的地址是可以改变的,D错。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值