您的位置:首页 > 编程语言 > C语言/C++

c++中指针常量,常指针,指向常量的常指针区分

2016-10-21 15:31 417 查看
const char * myPtr = &char_A;//指向常量的指针

char * const myPtr = &char_A;//常量的指针

const char * const myPtr = &char_A;//指向常量的常量指针

1.指针常量

**从字面意思可以看出,指针是一个常量,也就是地址不能被修改

#include <iostream>
using namespace std;

void main()
{

int a = 10;
int const *p = &a;
cout<<a<<endl;
cout<<*p<<endl;
int b = 20;
}


我们可以改变指针变量p所指向的内容,而不能改变p的地址空间,如 添加上p = &b;我们就会发现编译错误!

2.指向常量的指针

特点是指针所保存的地址可以改变,然而指针所指向的值却不可以改变。

int const p,比较好记的方法:把 读作pointer to然后从后往前读.

p is a pointer to const int,p是指向常量的指针

#include<iostream>
#include<stdlib.h>
using namespace std;

void main()
{
int i1=30;
int i2=40;
const int * pi=&i1;
printf("%d\n", *pi ) ;   //输出是30
pi=&i2;     //注意这里,pi可以在任意时候重新赋值一个新内存地址
i2=80;     //想想看:这里能用*pi=80;来代替吗?当然不能
printf("%d\n", *pi ) ;   //输出是80

system("pause");
}


3 指向常量的常指针

特点是指针所保存的地址不可变,指针所指向的数值也不可变

**const int const*p

典型例子

①int x=3; const int &y=x;//x=10;正确//y=20;错误,不能改变y的值

②const int x=3;x=5;错误

③int x=3; const int y=x;y=5;错误

④int x=3;const int *y=&x;*y=5;错误

⑤int x=3,z=4;int *const y=&x;y=&z;错误

⑥const int x=3; const int &y=x;y=5;错误

⑦int const a = 3; int p = &a;错误//指针指向const修饰的变量时,应该是const int const *p = &a;***
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: