详解指针常量和常量指针(C、C++工程师面试题)

概述:

何为指针,其实指针也是一种数据类型,具有指针类型的变量称为指针变量。指针变量用于存放内存单元地址。

C++提供了两个与地址相关的运算符(“*”和“&”)。

  • “*”:称为指针运算符;
  • “&”:称为取地址运算符;


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

特性:不能通过指针修改所指对象的值,但是指针本身可以改变,可以指向另外的对象。

实例1:此时p为常量指针。

#include 
using namespace std;
int main()
{
	int a=10;
	
	const int* p=&a;	//指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。 
	
	cout<<"a= " << a < 
  


运行结果:


详解指针常量和常量指针(C、C++工程师面试题)_第1张图片


实例2:常量指针,指针本身的值,可以改变,可以指向其他的对象。

#include 
using namespace std;
int main()
{
	int a=10;
	
	const int* p=&a;	//指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。 
	
	cout<<"a= " << a < 
  


运行结果:


详解指针常量和常量指针(C、C++工程师面试题)_第2张图片

实例3:常量指针,通过指针去修改其所指对象的值。(不可行,编译器会报错)

#include 
using namespace std;
int main()
{
	int a=10;
	
	const int* p=&a;	//指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。 
	
	cout<<"a= " << a < 
  


运行结果:(此处编译器提示,分给p的内存空间为只读)


详解指针常量和常量指针(C、C++工程师面试题)_第3张图片

实例4:常量指针。不能通过指针来修改其所指向变量的值,但可以直接修改指针所指变量的值(即不通过指针,直接修改其值)。

#include 
using namespace std;
int main()
{
	int a=10;
	
	const int* p=&a;	//指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。 
	
	cout<<"a= " << a <详解指针常量和常量指针(C、C++工程师面试题)_第4张图片


指针常量:指针类型的常量

特性:这时指针本身的值不能被修改,但可以通过指针修改其所指向变量的值。

实例1:通过指针类型的常量,修改其所指对象的值

#include 
using namespace std;
int main()
{
	int a=10;
	
	int* const p=&a;	//指针类型的常量 ,指针本身的值不可以被改变,但可以通过它修改其所指对象的值。 
	
	cout<<"a= " << a <详解指针常量和常量指针(C、C++工程师面试题)_第5张图片

实例2:指针类型的常量,不能将其指向其他的变量。(否则编译器报错)

#include 
using namespace std;
int main()
{
	int a=10;
	
	int* const p=&a;	//指针类型的常量 ,指针本身的值不可以被改变,但可以通过它修改其所指对象的值。 
	
	cout<<"a= " << a <详解指针常量和常量指针(C、C++工程师面试题)_第6张图片

总结:

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

  • 指针本身可以改变,可以再次指向另外的对象。
  • 不能通过指针修改其所指向的对象的值。
  • 对象本身的值可以直接修改。


指针常量:指针类型的常量。

  • 指针本身的值不能改变,即不能再指向另外的对象。
  • 可以修改指针所指对象的值。

你可能感兴趣的:(详解指针常量和常量指针(C、C++工程师面试题))