C语言中,指针是最难理解的一部分,尤其是Const指针变量。

Const指针变量只保护其Value值不被改变,并不能保护指针所指向的地址中的值不被改变,下面是针对Const指针的一个小练习:

#include "stdafx.h"

int main(int argc, char* argv[])
{

//定义基本类型的const变量,const 位置在哪儿都可以
const int x = 2,y = 3;  //两个常量
//定义一个非const变量
int z = 3;     //一个普通变量
//定义一个指向常的指针
const int* pc = &x;   //指向常量的指针
//定义一个常指针
int* const cp = &z;   //常指针
//定义一个非const指针
int* pp = &z;    //int 型指针

// x = y;  //x 为const变量,所以x的值不可以被更改   只能做右值

pc = &z; //可以,pc是一个指向常量的指针,不能通过该指针去修改指针所指向的内存空间的值,但是,该指针可以指向别的变量

// *pc = 10; //不可以,*pc所指向的地址为const变量,其值不可更改 pc是一个指向常量的指针,不能通过该指针去修改指针所指向的内存空间的值
// *pc = y; //不可以,同上
// *pc = 5; //同上

pc = pp; //可以,pc为指针,其值可被改变 pc是一个指向常量的指针,pp是一个普通指针,用一个普通指针给一个指向常量的指针赋值是可以的
// pp = pc; //用一个指向常量的指针,赋值给一个普通指针,不可以。如果可以,那么就可以通过普通的指针去修改内存的值

z = 5;  //可以,给一个非const变量赋值是可以的
z = x;  //可以,用一个const的变量给一个非const变量赋值是可以的

*cp = x; //可以,通过常指针去修改指针所指向变量的值,原则上来讲是可以的,如果指向的变量是const的,那么不同编译器会有不同的结果

// cp = &x; //不可以,cp为常指针,指针的值不能被修改,给常指针赋值是错误的

// pp = &x; //不可以,pp是非const指针,原则上来讲给它赋值是可以的,在不同的编译器下有不同的结果
// pp = pc; //不可以,指向常量的指针不能赋值给一个普通的指针
pp = cp; //可以,常指针可以赋值给一个普通指针

const int * const pp = &a; //双const 既保护指针又保护内存变量
printf("Hello World!\n");
return 0;

}

C语言中Const指针变量(常指针)相关推荐

  1. C语言中的void 和void 指针类型

    C语言中的void 和void 指针类型 C语言, void, void指针 许多初学者对C中的void 和void 的指针类型不是很了解.因此常常在使用上出现一些错误,本文将告诉大家关于void 和 ...

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

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

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

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

  4. C语言中const的用法

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

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

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

  6. c语言中cnthe普通变量,不得不说,关于 *(unsigned long *) 和 (unsigned long)

    @辛昕: 然而我很悲伤地再次郑重声明:我木有错!具体请看我回复 水果君 那难得一见的长回帖的回帖!!这事情居然还可以从遥远的 2月2号 刚下班放假那天开始.那天,水群里,水果君弄了个帖子,说让我去回, ...

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

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

  8. C语言中const用法详解

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

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

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

最新文章

  1. Vant简单H5 web app【小试牛刀】
  2. JavaScript获取节点类型、节点名称和节点值
  3. android,项目,一些教程
  4. ubuntu设置自动休眠
  5. golang语言变量定义、打印、占位符
  6. Guava之RangeMap
  7. 【测试方法篇】效率测试
  8. Shell 编程基础之 Case 练习
  9. 用SeaMonkey写cnblogs博客时碰到的问题
  10. vue封装echarts示例
  11. 不明意义的字符串匹配问题
  12. 易语言制作html5浏览器,易语言制作浏览器的方法教程
  13. APT、ET、RGI、ICQ
  14. 计算机cpu温度显示原理,鲁大师的测温功能是怎么做到的?测温原理介绍
  15. 基因组科学数据的安全管理与应用
  16. 有没有视频合并软件?合并视频这样做
  17. 2020.8 复习 7-11 分钟秒钟的时间相减 //PTA
  18. grpc-gateway插件:让客户端通过调http接口来远程调用grpc服务
  19. hive报错 spark_Spark是否能替代Hive
  20. PostgreSQL 基础模块---缓冲池管理

热门文章

  1. MacBook Air移动硬盘分区
  2. 【Matlab】Simulink系统仿真(了解)
  3. Java+SSM网上订餐系统点餐餐厅系统(含源码+论文+答辩PPT等)
  4. SAP中采购订单历史分类标识与实际业务描述
  5. python123注册登录_用Python实现web端用户登录和注册功能的教程
  6. URLDecoder.decode与URLEncoder.encode
  7. 数据仓库系列(一)什么是维度建模以及维度建模的基本要素
  8. CSS多行文本溢出隐藏,显示省略号
  9. 学习大数据需要具备什么基础么?
  10. 计算机网络常见的协议之ARP协议