详解指针常量和常量指针(C、C++工程师面试题)
常量指针,指针常量,详解,C++面试题2016-06-08
何为指针,其实指针也是一种数据类型,具有指针类型的变量称为指针变量。指针变量用于存放内存单元地址。
C++提供了两个与地址相关的运算符(“*”和“&”)。
特性:不能通过指针修改所指对象的值,但是指针本身可以改变,可以指向另外的对象。
<span style="font-size:18px;"><strong>#include<iostream>
using namespace std;
int main()
{
int a=10;
const int* p=&a; //指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
return 0;
}</strong></span>
运行结果:
#include<iostream>
using namespace std;
int main()
{
int a=10;
const int* p=&a; //指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
cout<<endl;
int b=20;
p=&b; // 修改常量指针p的指向,让其指向其他的对象
cout<<"b= " << b <<endl;
cout<<"*p= "<< *p <<endl;
return 0;
}
运行结果:
<strong><span style="font-size:18px;">#include<iostream>
using namespace std;
int main()
{
int a=10;
const int* p=&a; //指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
cout<<endl;
int b=20;
p=&b; // 修改常量指针p的指向,让其指向其他的对象
cout<<"b= " << b <<endl;
cout<<"*p= "<< *p <<endl;
*p=30; //通过指针p来修改其所指对象的值(不可行的,编译器会报错)
cout<<"b= " << b <<endl;
cout<<"*p= "<< *p <<endl;
return 0;
}</span></strong>
运行结果:(此处编译器提示,分给p的内存空间为只读)
#include<iostream>
using namespace std;
int main()
{
int a=10;
const int* p=&a; //指向常量的指针 ,不能通过指针来修改所指对象的值。但指针本身可以指向其他的对象。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
cout<<endl;
a=20; //可以直接修改其值,不通过指针p
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
return 0;
}运行结果:
特性:这时指针本身的值不能被修改,但可以通过指针修改其所指向变量的值。
#include<iostream>
using namespace std;
int main()
{
int a=10;
int* const p=&a; //指针类型的常量 ,指针本身的值不可以被改变,但可以通过它修改其所指对象的值。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
cout<<endl;
*p=20; //通过指针,修改其所指对象的值。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
return 0;
}运行结果:
#include<iostream>
using namespace std;
int main()
{
int a=10;
int* const p=&a; //指针类型的常量 ,指针本身的值不可以被改变,但可以通过它修改其所指对象的值。
cout<<"a= " << a <<endl;
cout<<"*p= "<< *p <<endl;
cout<<endl;
int b=20;
p=&b; //指针类型的常量,不能将其指向另外的对象。
cout<<"a= " << b <<endl;
cout<<"*p= "<< *p <<endl;
return 0;
}运行结果:
常量指针:指向常量的指针。
指针常量:指针类型的常量。