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

柔情只为你懂 2022-05-12 08:16 405阅读 0赞

返回目录:https://blog.csdn.net/chen1083376511/article/details/82723709

此文的知识详解,请访问:https://blog.csdn.net/chen1083376511/article/details/78442059#comments

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

答+分析:

指针常量:指向常量的指针。
const int *p1;
int const *p1;两者等价。

const *p1(或者const int *p1),*p1是p1指向的变量的内容,所以p1所指向的内存区的值不能被改变。
#include
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 p2,p2是一个指针,这个指针一旦指向某对象,就不能改变指向为其他对象,所以是一个固定不能改变地址的指针。
#include
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需要指向x,int *px语句并没有将px指向x的地址,A选项错。

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

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

-————————————————————————————————————————————————————————————————————————————————————

发表评论

表情:
评论列表 (有 0 条评论,405人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++ 指针常量常量指针

    吐槽一下: 指针常量与常量指针的翻译就好比机器学习中Regularization翻译成正则化一样,讲真,正则化这个说法确实要比规则化显得高端些,但是到了理解的时候,还是要按

    相关 指针常量常量指针

    指针常量是什么?如何声明和使用指针常量?常量指针又是什么?如何声明和使用常量指针?本文就是要讨论和解决这些问题。 我们先回顾下,什么是指针?什么是常量?指针是一种特殊的变量,

    相关 指针常量常量指针

    指针常量与常量指针是较为通俗化的叫法,C++的书籍中一般将其描述为: 指针常量(常指针): 指针指向不能改变。 助记:本质为常量,即这个指针指向不可变。 常量指针: