C语言关键字 - 铁布衫:const 转载

const

描述:相传C世界中出现了一件极品装备const,它能的出现,让天下所有的刺客,黑客都失业了,在它的保护下,所有的变量都可以完好无损。

作用:const是constant的简写,表示海枯石栏,恒定不变,一旦相伴,永不“心”变。只要一个变量前面用const来修辞,就意味着该变量里的数据可以被访问,不能被修改。我们其实还可以给它起个更雅的名字叫:readonly。

虽然理解起const来相对比较容易理解,但是const不仅仅可以用来修辞基本类型,它还经常用来修辞一些构造类型和指针及其参合体:如数组,指针,指针数组,结构体数组,结构体指针数组等。一旦和这些复杂类型接合起来,还有一定的迷惑性的。我们一一进行分析。

1 const int a = 10;

2 int const a = 10;

3 const int a[10] = {1,2,3,4,5,6,7,8,9,10};

4 const int *p;

5 int * const p;

6 const struct devices dev[5];

7 struct devices const * dev[5];

看到上面列出的例子,我相信很多朋友都会倒吸一口冷气:想说爱你,不是一件容易的事。不过,我这有两招辨别使用的技巧:

  • 将类型去掉
  • 看const修辞谁,谁就拥有了铁布衫,谁的值就是不能修改的,readonly的。

1.       去掉类型int变成:const a = 10,a拥有了铁布衫,a的值不变。

2.       去掉类型int变成:const a = 10,a拥有了铁布衫,a的值不变,这两个效果一样。

3.       去掉类型int变成:const a[10],a[10] 拥有了铁布衫,a数组里的值不变。

4.       const修辞*p,去掉类型int变成:const *p,*p 拥有了铁布衫(下图中空间2),p所指向的空间里的值不变。

5.       const修辞p,去掉类型int*变成:const p,指针变量p拥有了铁布衫(下图中空间1),指针变量p里的值不变,也就是说p不能再指向其它地址,但是p所指向的空间里的值可变,如图xxx所示。

图xxx 指针变量与指针变量所指向的空间示意图

6.       去掉类型struct devices变成:const dev[5],dev[5] 拥有了铁布衫,dev[5]数组里的值不变。

7.       这是一个devices结构体类型的指针数组,它拥有5个devices结构体类型指针,每个指针指向一个devices结构体,const修辞*dev[5],去掉类型struct devices变成:const *dev[5],指针数组*dev[5]拥有了铁布衫,指针数组dev中每个元素指向的空间里的值不变。

时间: 2024-10-10 05:40:18

C语言关键字 - 铁布衫:const 转载的相关文章

C语言学习笔记--const 和 volatile关键字

1.const关键字 (1)const 修饰的变量是只读的,它不是真正的常量,本质还是变量,只是告诉编译器不能出现在赋值号左边! (2)const 修饰的局部变量在栈上分配空间 (3)const 修饰的全局变量在全局数据区分配空间(vc.gcc 会将其放入常量区,bcc 放入全局数据区) (4) const 只在编译期有用,在运行期无用 #include <stdio.h> const int g_cc = 2;//bcc 下存储在全局数据区,可修改. //vc.gcc 将其存储在常量区,不可

1.C语言关键字(auto break case char const swtich)

ANSI C标准C语言共有32个关键字,分别为: auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while 1)auto:一个自动存储变量的关键字,也就是声明一块

c语言关键字-const

const即constant的缩写,它是定义只读变量的关键字,或者说它是定义常变量的关键字. 虽然const定义的是变量但又相当于常量,说它是常量又有变量的属性,所以叫常变量. const定义的变量是不允许改变的,不允许给他重新赋值,必须在定义的时候赋值. 2.const关键字作用 const用于定义常量,const定义的常量编译器可以对其进行数据静态类型安全检查 const修饰函数形参,当输入参数为用户自定义参数和抽象数据类型时,应该将值传递转换为const&传递,可以提高效率.因为值传递需要

C语言关键字

常用c语言关键字 C 语言标准定义的32 个关键字:auto 声明自动变量,缺省时编译器一般默认为autoint 声明整型变量double 声明双精度变量long 声明长整型变量char 声明字符型变量float 声明浮点型变量short 声明短整型变量signed 声明有符号类型变量unsigned 声明无符号类型变量struct 声明结构体变量union 声明联合数据类型enum 声明枚举类型static 声明静态变量switch 用于开关语句case 开关语句分支default 开关语句中

李洪强iOS开发之OC[016]C语言关键字

// //  main.m //  04 - C语言关键字 // //  Created by vic fan on 16/7/12. //  Copyright © 2016年 李洪强. All rights reserved. // C语言关键字 A -  数据相关 1) 基本数据类型(5个) void    空   没有的意思 char    字符 占 1个字节(char的本质也是数字) int     整数  4个字节 float   浮点数  (小数点)保留7位有效数字 double 

iOS-C_C语言关键字

C语言关键字 所谓关键字就是已被 C语言编辑工具本身使用, 不能作其它用途使用的字. auto :声明自动变量 一般不使用 double :声明双精度变量或函数 int: 声明整型变量或函数 struct:声明结构体变量或函数 break:跳出当前循环 else :条件语句否定分支(与 if 连用) long :声明长整型变量或函数 switch :用于开关语句 case:开关语句分支 enum :声明枚举类型 register:声明寄存器变量 typedef:用以给数据类型取别名(当然还有其他

FILE不是C语言关键字

FILE不是C语言关键字,只是标准C中的标准输入输出中定义的一个新的数据类型 stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _base; int _flag; int _file; int _charbuf; int _bufsiz; char* _tmpfname;} FILE; FILE 主要用来定义带缓冲的文件指针,如:FILE *fp; 附:C语言一共有32个关键字,如下: auto 局部变量(自动储存)break 无

C 语言关键字

C 语言关键字 auto 局部变量(自动储存) break无条件退出程序最内层循环 case switch语句中选择项 char单字节整型数据 const定义不可更改的常量值 continue中断本次循环,并转向下一次循环 default switch语句中的默认选择项 do 用于构成do-..while循环语句 double定义双精度浮点型数据 else构成if-..else选择程序结构 enum枚举 extern在其它程序模块中说明了全局变量 float定义单精度浮点型数据 for构成for

读书笔记-C语言关键字

001 关键字 C语言一共32个关键字 1. 声明和定义 在开始认识关键字前,必须要明白什么是声明,什么事定义: 定义:(编译器)创建一个对象,为这个对象分配一段内存并给他取上一个名字.在一个作用域内,一个变量或者对象只能定义一次,并且定以后为它分配的内存不可变: 声明:1.告诉编译器这个名字已经和一片内存匹配上了,并且这个内存是在其他地方定义的,声明可以多次:2.告诉编译器,这个名字已经占用,不能再用来定义其他变量或者对象了. 备注:定义创建了对象,并为它分配了内存,声明没有分配内存 2. 关