指针常量和常量指针详谈
2011-05-01 16:03
148 查看
首先介绍一下:
指针的值,是指指针变量内存空间中的值,在这里也就是一个地址。
指针所指向地址的值,是指指针内存空间中的地址中的值。
eg:int a=50;
int *p=&a;
这里指针的值为变量a的地址,即&a;而指针所指向的值是指变量a的地址中的值,也就是50;1:指针常量
指针常量也就是所指针的值不变,也就是指向的地址不变。但所指向地址当中的值可以改变,也可通过解引用来改变它的值。
eg:int a=50;
int b=20;
int *const p=&a;
p=&b;//错误,p所指向的内存不能改变。
*p=30;//可以,可以通过指针运算符来改变指针所指向空间中的值;
a=40;//可以,指针所指向空间的值可以变。
2:常量指针
常量指针指指向空间中的值是对于指针来说是个常量,也就是说不能通过解引用来改变其值。
eg:int a=20;
int b=30;
const int *p=&a;//这里和int const *p=&a是一样的,同样是常量指针。
p=&b;//可以
*p=60;//不可以,不可以通过指针运算符来改变其值。
b=50;//可以
总结:指针常量和常量指针区别在于一个指向的地址不可以改变,一个不可以通过指针运算符来改变指向空间中的值,但都可以通过指向空间的变量来改变其中的值
3:const int*const p
这种形式是上面的指针常量和常量指针的综合体,也就是说其不能改变其指向空间的地址,也不能通过指针运算符来改变指向空间的值。
eg:int a=10;
int b=20;
const int *const p=&a;
p=&b;//错误
*p=50;//错误
a=40;//正确
指针的值,是指指针变量内存空间中的值,在这里也就是一个地址。
指针所指向地址的值,是指指针内存空间中的地址中的值。
eg:int a=50;
int *p=&a;
这里指针的值为变量a的地址,即&a;而指针所指向的值是指变量a的地址中的值,也就是50;1:指针常量
指针常量也就是所指针的值不变,也就是指向的地址不变。但所指向地址当中的值可以改变,也可通过解引用来改变它的值。
eg:int a=50;
int b=20;
int *const p=&a;
p=&b;//错误,p所指向的内存不能改变。
*p=30;//可以,可以通过指针运算符来改变指针所指向空间中的值;
a=40;//可以,指针所指向空间的值可以变。
2:常量指针
常量指针指指向空间中的值是对于指针来说是个常量,也就是说不能通过解引用来改变其值。
eg:int a=20;
int b=30;
const int *p=&a;//这里和int const *p=&a是一样的,同样是常量指针。
p=&b;//可以
*p=60;//不可以,不可以通过指针运算符来改变其值。
b=50;//可以
总结:指针常量和常量指针区别在于一个指向的地址不可以改变,一个不可以通过指针运算符来改变指向空间中的值,但都可以通过指向空间的变量来改变其中的值
3:const int*const p
这种形式是上面的指针常量和常量指针的综合体,也就是说其不能改变其指向空间的地址,也不能通过指针运算符来改变指向空间的值。
eg:int a=10;
int b=20;
const int *const p=&a;
p=&b;//错误
*p=50;//错误
a=40;//正确
相关文章推荐
- [C++] C++指针的那些事 -- 常量,变量,指针及指针相关的三个数值
- 常量指针与指向常量的指针
- 区分指针常量和常量指针的技巧
- C/C++中的常量指针和指针常量
- cpp基础: 指针、常量、类型别名
- 关于实例声明:C++中指针常量和常量指针的问题
- C++基础之二:常量指针和指针常量
- [荐]字符串与指针常量
- 指针常量和常量指针的几种改变方式
- 常量指针和引用的实践
- 指针与常量
- 指针常量和常量指针
- 【C++基础之二】常量指针和指针常量
- 指针常量与常量指针的区别?
- 关于const引用、常量指针、指针常量的一些知识
- 常量指针和指针常量的区别详解
- string 转 const char * 转 char * , 常量指针和指针常量
- 常量指针和指针常量的区别
- C++ 引用和指针的区别 常量指针和指针常量的区别
- C/C++中的常量指针与指针常量