一个指针变量可以操作两个存储单元的值,一是地址值,即指针变量自己的值,改变地址值,就可以改变指针的指向。二是指针变量指向的存储空间的值,也就是通过对指针进行间接访问得到的值。在指针类型的形参前加上const修饰,目的就是只运行函数读取该指针指向的内容而不修改其内容。
定义指针时根据const的位置可以得到不同常值:常指针、指向常量的指针、指向常量的常指针。
(1)常指针
表示指针值在经过初始化之后不允许修改的指针。
语法:基类型名 *const 指针名=地址值;

int a=10,b=20;
int *const p=&a;
*p=20;//合法,相当于a=20
p=&b;//非法

定义了常指针p,说明p只能用于读取而不能修改,因此定义时就必须初始化使其有确切的地址值。
(2)指向常量的指针
所指向的内容不允许通过该指针修改
语法:基类型名 const * 指针名;
(const 基类型名 * 指针名;)

int a=10,b=20;
int const * p=&a;
*p=20;//非法
p=&b;//合法

const修饰*指针名,表示指针指向的内容不允许通过指针修改,但指针本身是变量,可以改变。但是可以通过直接引用方式对a的值做出修改,如a=20。
(3)指向常量的常指针
其指针本身以及指向的内容都不允许被修改。
语法:const 基类型名 *const 指针名=地址值;

int a=10,b=20;
const int * const p=&a;
*p=20;//非法
p=&b;//非法

两个const分别表示指针以及指针指向的内容都是常量,定义时就必须初始化使指针具有确定的地址值。

其中,指向常量的指针最为常用,特别是函数中,能对参数起保护作用

void change(const int *p)
{*p=20;printf("%d",*p);
}
void main()
{int a=10;change(&a);
}

通常在需要借助指针共享实参数组空间,但是又不希望通过该指针修改实参数组元素的场合,会在指针形参前加入const定义为一个指针常量的指针来实现。

C语言中const与指针相关推荐

  1. C语言中const的用法

    C语言中const的用法 基本解释         const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的健壮性,另外,在观看别人代码的时候,清晰理解co ...

  2. const在c语言中作用,在C语言中const作用全面总结.doc

    在C语言中const作用全面总结 C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结如下,期望对朋友们有所帮助.Const 是C++中常 ...

  3. c语言中const的作用面试,C语言const关键字作用

    C语言中const代表着"不可变",基本和常量一样不可修改,但是应用场景不一样. 一.应用在变量 const char a='A'; a='B';  //错误,变量a的值不可以修改 ...

  4. c语言char数组和short数组的区别,详解C语言中Char型指针数组与字符数组的区别

    详解C语言中Char型指针数组与字符数组的区别 详解C语言中Char型指针数组与字符数组的区别 1.char 类型的指针数组:每个元素都指向一个字符串,指向可以改变 char *name[3] = { ...

  5. c语言数组前const的作用,c语言中const的用法

    C语言作为一门新型高级编程语言,在计算机软件编程中具有较为广泛的应用和实现.下面小编就跟你们详细介绍下c语言中const的用法,希望对你们有用. c语言中const的用法如下: const的基本解释 ...

  6. c语言 函数参数 const,c语言中const的使用方法

    c语言中const的使用方法 发布时间:2020-06-22 16:03:32 来源:亿速云 阅读:188 作者:Leah 这篇文章运用简单易懂的例子给大家介绍c语言中const的使用方法,代码非常详 ...

  7. C语言中const用法详解

    C语言中const用法详解 const修饰普通变量 const作用在于定义一个常量,比如const int a = 10,代表a的值不能被直接修改了,是一个常量,但仍可以通过指针的方式间接修改,如下图 ...

  8. const 作用 c语言,在C语言中const 作用的的全面总结.doc

    右面拒账则川盾衡徊洁豁却尤骂登硫矢窍松寝春摘慌瘪悯嚏蓑篓雍淫东佳粮瘤遍榜柔脾右晕沮椒肃蛾闲惹戚谩智胜汁秀玉怠继纺侥圃唯需齿翟顿稽吩餐音欧宪撅虐镁级脖铲贵酋挚昂藕瓢需冷乃依萎听滚俄郭奴痈急欲沾挂畅好姐载 ...

  9. C语言中的“悬空指针”和“野指针”是什么意思?

    提起C语言大部分开发者很自然就会想到指针二字,没错,作为C的核心和灵魂,它的地位咱们就不再赘述了,今天我们想跟大家讲的是指针中的两个特有名词:"悬空指针"和"野指针&qu ...

最新文章

  1. A TLS packet with unexpected length was received 解决方法
  2. 题库练习1(单词长度、统计字符个数、)
  3. Chrome 对于 glyphicon 字体图标不显示的解决办法
  4. IntelliJ IDEA添加jar包
  5. 奇异值分解(Singular Value Decomposition,SVD)
  6. vue 计算文件hash值_vue的hash值原理,也是table切换。
  7. java图形接口_java基础七 [图形用户接口](阅读Head First Java记录)
  8. java json float_java – Json解析问题(值自动更改为float)
  9. android 文字垂直居中,前端常见问题——安卓文本无法垂直居中
  10. linux下挂载共享目录,linux下挂载windows的共享目录
  11. 【微信技术-微信小程序】------ 使用ColorUI组件简单入门
  12. 用spss进行数据的标准化处理_如何用SPSS对数据进行标准化处理
  13. python学习笔记6---数据解析
  14. iPad 被锁死后如何恢复出厂设置
  15. HDU4609 3-idiots fft
  16. 自行更换iPhone 6s 手机电池 | 工序步骤
  17. EPICS-从零开始的电机控制
  18. 计算机毕业设计(附源码)python众筹平台
  19. 同一交换机不同网段的主机间通信
  20. npoi设置Excel边框

热门文章

  1. 华硕无线网卡驱动下载
  2. PS编辑按钮图片(修改或添加文字等)
  3. 苹果电脑误删文件怎么找回?苹果电脑删了文件能恢复吗?苹果电脑文件删除怎么恢复
  4. 2019年3月-4月前端面试题汇总(持续更新中...)
  5. 电脑固态硬盘可以装几个呢
  6. Gazebo機器人仿真學習探索筆記(二)基本使用說明
  7. 微信小程序/公众号/开放平台账号被冻结后原始ID找回方法
  8. 文件服务器资源管理器(FSRM)
  9. Python每日一记112matplotlib次坐标轴和翻转坐标轴
  10. 如何用PS改变服装色与背景色