C语言中Const与指针(转载)
一、说明指针常量、指向常量的指针和指向常量的常量指针的含义、区别和共同点
首先,以上三种概念的共同点:都指的是指针
指针也是一种变量,它存储指定类型的变量的内存地址,如char* 来声明一个字符型指针变量,跟其它变量一样,当其值不可改变时,该指针变量就成为了指针常量,既是常量,它当然一直指向同一个内存地址,而不能被改变。
指向常量的指针顾名思义就是说其指向的那个地址的值不是变量而是常量了,即其指向的内存地址的内容将不能被改变,而指针本身则可以改变。
指向常量的指针常量最好理解,结合以上两者的含义即可知道,其特点就是指针本身的值(即指向的内存地址)和指针指向内存地址的内容均是常量,不能被改变。
二、const的应用举例及说明
//指针常量
char str[5] = "abcd"; //声明一个字符数组
char * const pStr = str; //让pStr指针指向字符数组变量str;pStr该指针常量值(即指向的内存地址)不能被改变。
//分别执行以下语句的结果,可以体现它的特点
pStr = "asdfaf" ; //企图让pStr 指针常量指向另一个地址,结果报错!
*pStr = 'd'; //修改pStr指针常量指向的内存地址中第一个字符的内容为d,结果正确,第一个字符被修改。
//指向常量的指针
char str[5] = "abcd"; //声明一个字符数组
const char * pStr = str; //让pStr指针指向字符数组常量str,该字符数组不能被改变;
//分别执行以下语句的结果,可以体现它的特点
pStr = "asdfaf" ; //让pStr 指针常量指向另一个地址,结果正确,pStr不再指向str字符数组常量,而指向了字符串asdfaf的首地址!
*pStr = 'd'; //修改pStr指针常量指向的内存地址中第一个字符的内容为d,结果错误,常量不能被修改。
//指向常量的指针常量
char str[5] = "abcd"; //声明一个字符数组
const char * const pStr = str; //让pStr指针指向字符数组常量str,该字符数组不能被改变;
//分别执行以下语句的结果,可以体现它的特点
pStr = "asdfaf" ; //让pStr 指针常量指向另一个地址,结果错误,此时是指针值不能被改变!
*pStr = 'd'; //修改pStr指针常量指向的内存地址中第一个字符的内容为d,结果错误,此时是内容不能被改变。
三、const声明的变量必须要进行初始化赋值
如果错过了这个机会,以后就别想再给常量赋值了
const int a = 0 和 int const a = 0的作用相同
const要求所修饰的对象为常量,不可被改变,不可作为左值
C语言中Const与指针(转载)的更多相关文章
- [原创]c语言中const与指针的用法
最近一直在准备笔试,补补大一大二欠下的课.复习c语言时碰见这么个题: 1 2 3 4 5 int a=248, b=4; int const c=21; const int *d=&a; ...
- C/C++语言中const的用法
1. const 在C和C++中的区别 C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所 ...
- C-C++到底支不支持VLA以及两种语言中const的区别
C-C++到底支不支持VLA以及两种语言中const的区别 到底支不支持VLA VLA就是variable-length array,也就是变长数组. 最近写程序的时候无意间发现,gcc中竟然支持下面 ...
- C语言中const和数组
C语言中const的用法 const:在定义变量时,如果使用关键字const,那就表示限制这个变量值不允许被改变. (1) 修饰变量 const离谁越近,谁的值就不能改变. int const ...
- C语言中file文件指针概念及其操作 (转载)
文件 文件的基本概念 所谓"文件"是指一组相关数据的有序集合. 这个数据集有一个名称,叫做文件名.实际上在前面的各章中我们已经多次使用了文件,例如源程序文件.目标文件.可执行文件. ...
- C语言中const关键字的用法
关键字const用来定义常量,如果一个变量被const修饰,那么它的值就不能再被改变,我想一定有人有这样的疑问,C语言中不是有#define吗,干嘛还要用const呢,我想事物的存在一定有它自己的道理 ...
- C语言中const的正确用法
今天看<Linux内核编程>(Claudia Salzberg Podriguez等著)时,文中(p39)有一个错误,就是关于const的用法. 原文中举例说明:const int *x中 ...
- C语言中const的用法总结
const是一个C语言的关键字,它限定一个变量不允许被改变.使用const在一定程度上可以提高程序的安全性和可靠性,另外,在观看别人代码的时候,清晰理解const所起的作用,对理解对方的程 ...
- C语言中const有什么用途
自己上网查的资料. 可以定义const常量,具有不可变性.例如:const int Max=100; Max++会产生错误; 便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患.例如: v ...
随机推荐
- js推断指定函数、变量是否存在的方法
//推断是否存在指定函数 function isExitsFunction(funcName) { try { if (typeof (eval(funcName)) == "functio ...
- Andriod之Activity
eclipse还原默认的面板设计:Window > Reset Perspective> OK1\ 1.多个Activity之间的关系: 2.Intent的基本作用: 3.在一个Activ ...
- Ext JS学习第五天 Ext_window组件(一)
此文来记录学习笔记 •第一个组件:Ext.window.Window.对于组件,也就是Ext最吸引开发者的地方,那么我们要真正的使用Ext的组件,首先必须学会阅读API文档. –xtype:组件的别名 ...
- 在mac本上折腾android 开发环境
众所周知的原因,google的很多网站在国内无法访问,苦逼了一堆天朝程序员,下是在mac本上折腾android 开发环境的过程: 一.先下载android sdk for mac 给二个靠谱的网址: ...
- How Many Answers Are Wrong(并查集)
Description TT and FF are ... friends. Uh... very very good friends -________-b FF is a bad boy, he ...
- POJ 3903 Stock Exchange (E - LIS 最长上升子序列)
POJ 3903 Stock Exchange (E - LIS 最长上升子序列) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action ...
- 杭电oj find your present (2)
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- linux命令行后台运行与调回
直接ctrl+z 这个是暂时到后台执行 要调回来 输入 fg
- [LeetCode]题解(python):021-Merge Two Sorted Lists
题目来源: https://leetcode.com/problems/merge-two-sorted-lists/ 题意分析: 题目给出两个排好序的链表,将这两个链表整合成一个新的有序的链表. 题 ...
- 我的ubuntu
题外话:不知不觉也已经大三,最近思考了很多.在腾讯网看到了对李嘉诚的一篇专访,感触颇深. 想起来我从第一次接触ubuntu到现在也有一年了,记得第一个版本还是12.04,不过很快就换成了12.10,在 ...