【C语言天天练(一)】变量的类型限定词
2014-04-25 14:33
316 查看
引言:
上一节分析了变量的存储类型,除了存储类型外,还有类型限定词,如,const、volatile、restrict。描述如下。
1. 类型限定词const
对于一个用const关键字声明的变量,不能通过赋值、增量或减量运算来修改该变量的值。但可以初始化该变量的值。如:
const int nochange;
nochange = 12; // 不允许
const int nochange = 12; // 允许
const声明变量很简单,但若对于指针使用const声明时,应注意区分指针本身为const与指针所向的值为const区分开来。如:
const float *pf; // pf 指向一个常量浮点数值
float const *pfc; // 等同于const float *pfc;
float const *pf; // pt是一个指向常量的指针
一个位于*左边位置的const使得数据成为常量,而一个位于*右边的const使得指针自身成为常量。
常见用法:用const声明作为函数形式参数的指针。
void dispaly(const int array[], int limit); 该声明使得传递的形式参数指针所指的内容不能被改变。
2. 类型限定词volatile
限定词volatile告诉编译器该变量除了可能被程序改变外还可被其他代理改变。经常被用于硬件地址和其他并行运行的程序共享的数据。语法通const一样,如下:
volatile int loc;// lol1是一个易变的位置
volatile int *ploc; // ploc指向一个易变的位置
一个值可以同时是const 和volatile类型。声明顺序不重要:
volatile const int loc;
const volatile int *ploc;
一个变量可以即被const修饰,同时又被volatile修饰的原因是:被const声明的变量表明,该变量不能被本程序修改,但对于能否由其他地方修改却没有规定,比如可能被硬件终端修改。被volatile修饰的变量告诉编译器,不要优化该段代码,比如,访问某个变量时不要从寄存器中取值,要从内存中去取。
3.类型限定词restrict
关键字restrict通过允许编译器优化某几种代码增强了计算支持。它只可用于指针,并标明指针是访问一个数据对象的唯一且初始的方式。如:
int *restrict restar = (int *)malloc(10 * sizeof(int));
指针restar是访问由malloc分配的内存的唯一且初始的方式。
上一节分析了变量的存储类型,除了存储类型外,还有类型限定词,如,const、volatile、restrict。描述如下。
1. 类型限定词const
对于一个用const关键字声明的变量,不能通过赋值、增量或减量运算来修改该变量的值。但可以初始化该变量的值。如:
const int nochange;
nochange = 12; // 不允许
const int nochange = 12; // 允许
const声明变量很简单,但若对于指针使用const声明时,应注意区分指针本身为const与指针所向的值为const区分开来。如:
const float *pf; // pf 指向一个常量浮点数值
float const *pfc; // 等同于const float *pfc;
float const *pf; // pt是一个指向常量的指针
一个位于*左边位置的const使得数据成为常量,而一个位于*右边的const使得指针自身成为常量。
常见用法:用const声明作为函数形式参数的指针。
void dispaly(const int array[], int limit); 该声明使得传递的形式参数指针所指的内容不能被改变。
2. 类型限定词volatile
限定词volatile告诉编译器该变量除了可能被程序改变外还可被其他代理改变。经常被用于硬件地址和其他并行运行的程序共享的数据。语法通const一样,如下:
volatile int loc;// lol1是一个易变的位置
volatile int *ploc; // ploc指向一个易变的位置
一个值可以同时是const 和volatile类型。声明顺序不重要:
volatile const int loc;
const volatile int *ploc;
一个变量可以即被const修饰,同时又被volatile修饰的原因是:被const声明的变量表明,该变量不能被本程序修改,但对于能否由其他地方修改却没有规定,比如可能被硬件终端修改。被volatile修饰的变量告诉编译器,不要优化该段代码,比如,访问某个变量时不要从寄存器中取值,要从内存中去取。
3.类型限定词restrict
关键字restrict通过允许编译器优化某几种代码增强了计算支持。它只可用于指针,并标明指针是访问一个数据对象的唯一且初始的方式。如:
int *restrict restar = (int *)malloc(10 * sizeof(int));
指针restar是访问由malloc分配的内存的唯一且初始的方式。
相关文章推荐
- 【C语言天天练(零)】变量的存储类型
- C语言变量类型和存储分配
- 【C语言】18-变量类型
- MYSQL 变量类型对应到C语言中的变量类型
- C语言实现多种类型变量的混合输出
- C语言 变量类型
- 第二章 变量和基本类型——2.4 const 限定符
- 2 C语言 常量,进制,类型限定 输入输出 运算符 类型转换
- 【C语言】编写一个函数,传入a,b两个int类型的变量,返回两个值的最大公约数。(辗转相除法和常规求法)
- GPU编程自学6 —— 函数与变量类型限定符
- c语言中没有string类型变量怎么办?没有bool怎么办?
- C语言--变量类型
- C语言--变量类型
- 【C语言】-变量之间的类型转换
- C语言的volatile类型限定符
- 输出C语言中 变量的类型
- java泛型程序设计——类型变量限定 + 泛型代码和虚拟机
- 【C语言】18-变量类型
- IT之路-C语言中五大内存区及变量的存储类型、简单shell脚本(上).ZCSDN-2017.7.18
- 可存放任意类型变量的动态数组--C语言实现