指针的问题2 指向常量的指针与常量指针
2015-07-12 10:17
471 查看
指向常量的指针即是声明指针的时候使用const关键字声明
int value = 10;
const int *pvalue = value;
======================================================================================================================================
虽然不能直接改变指针的值,但是发现某书上
int number = 7;
pvalue = &number;
可以改变指向常量的指针指向number的pvalue中的地址,仍不能使用指针改变他指向的值。
通过实验发现,改变地址之后,指针的值也发生了变化。
或许是看的译本的缘故,这路翻译的并不清楚。
通过资料的整合发现:
实质上指向常亮的指针只是不能够使用类似于
*pvalue = number
的修改方式,修改地址是可以改变它的值的。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
同理,常量指针即是地址不能改变,值可以改变
定义:
int value;
int *const pvalue =&value;
可以看出指针的的值是可以改变的
由上图可以看出当使用pvalue = &value的时候编译时会报错
在验证途中发现,定义常量指针是可以使用NULL初始化的,只是不会有结果,并且会提示Segmentation fault(core dumped),提示使用了非法指针(这里是指空指针)。
造成Segmentation fault将在接下来的时间更新。
int value = 10;
const int *pvalue = value;
======================================================================================================================================
虽然不能直接改变指针的值,但是发现某书上
int number = 7;
pvalue = &number;
可以改变指向常量的指针指向number的pvalue中的地址,仍不能使用指针改变他指向的值。
通过实验发现,改变地址之后,指针的值也发生了变化。
或许是看的译本的缘故,这路翻译的并不清楚。
通过资料的整合发现:
实质上指向常亮的指针只是不能够使用类似于
*pvalue = number
的修改方式,修改地址是可以改变它的值的。
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
同理,常量指针即是地址不能改变,值可以改变
定义:
int value;
int *const pvalue =&value;
可以看出指针的的值是可以改变的
由上图可以看出当使用pvalue = &value的时候编译时会报错
在验证途中发现,定义常量指针是可以使用NULL初始化的,只是不会有结果,并且会提示Segmentation fault(core dumped),提示使用了非法指针(这里是指空指针)。
造成Segmentation fault将在接下来的时间更新。
相关文章推荐
- Linux socket 初步
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- 关于指针的一些事情
- Scientific Linux 5.5 图形安装教程
- 基于 Linux 集群环境上 GPFS 的问题诊断
- 谁是桌面王者?Win PK Linux三大镇山之宝
- vivi下重新调整分区
- Linux VS Unix:Linux欲一统天下 Unix不死
- linux下设定环境变量