c语言关键字(上)
来源:互联网 发布:dnf提示框源码 编辑:程序博客网 时间:2024/05/22 17:05
关键字:
c语言中有些单词具有特殊意义,不允许用作标识符,这些单词称为关键字或保留字。
常见关键字:
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、const
一种修饰符,被const修饰的变量等不可以修改,即意味着“只读”。
本质:const在谁后面谁就不可修改,const在最前面则将其后移一位即可,二者等效
1)修饰变量
const int a=3;
int const a=3;
表示a是一个常整型数,其值3不可以被修改。
2)修饰指针
const int *p;
int *const p;
int const *p const;
第一个表示p是一个常整数型的指针,其指向的整型数不可以被修改,但指针可以被修改,此常见于函数参数的引用,避免创建参数副本(即当你只引用传进来指针所指向的值时应该加上const修饰符,程序中修改编译就不通过,可以减少程序的bug)
第二个表示p是一个整型数的常指针,其指针不可以被修改,但指针指向的整型数可以被修改。
第三个表示p是一个常整型数的常指针,其指向的整型数不可以被修改,指针也不可以被修改。
3)修饰函数
void test() const
{
}
表示此函数为常函数,其类的成员变量不能被修改。
2、static
声明静态变量或函数。此关键字可设置作用域,限制变量的存储域等。
1)设置变量的存储域;函数体内的局部变量被其修饰,其变量的作用范围为该函数体,不同于auto变量,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值。
例:
#include <stdio.h> void test() { static int num = 0; num++; printf("%d\n", num); } int main() { int i = 0; for(i=0; i<10; i++) { test(); } return 0; }
分析:test函数中num被static修饰,输出结果为12345678910,表示num的初值0的内存只被分配了一次;而num不被static修饰,输出结果为10个1,此每次的循环都会取num初值0的内存。
2)限制作用域;在模块内的全局变量被修饰,则变量只能在当前源文件使用。(即能被模块内的函数访问,不能被其模块外其他函数访问)
3)限制作用域;在模块内的static函数只可被这一模块内的其他函数调用,这个函数的使用范围被限制在声明它的模块内。
3、register
寄存器关键字,将变量存放在cpu当中的寄存器当中,不通过内存寻址访问从而提高效率。
举例:
#include <stdio.h> int main() { int i = 0,num=0; for(i=0; i<10; i++){num=num+i;}printf("num=%d\n",num); return 0; } int main() { register int i=0; int num=0; for(i=0;i<10;i++) { num=num+i; } printf("num=%d\n",num); return 0; }
比较这两个程序,前面程序中的i是默认的自动变量,在程序调用时是分配临时的存储空间,调用的时候也是从内存中调用的;而后面被register修饰的变量,其值是存放在cpu的寄存器中,调用时直接从寄存器中取出参加运算,存放在寄存器中的变量值调用需要的时间短,从而节省了内存。
register使用时需要注意的几点:
1)只有局部自动变量和形式参数可以作为寄存器变量,其他(如全局变量)不行。
2)register变量不可能放在内存中,不能用“&”来获取register变量的地址。
3)一个计算机系统中的寄存器数目是有限的,不能定义多个寄存器变量。
4)局部静态变量不能定义为寄存器变量。
5)register变量必须是能被cpu所接受的类型。意味着register必须是一个单个的值,并且长度应该小于或等于整型的长度。
- c语言关键字(上)
- C语言(关键字)
- C语言(关键字const)
- c语言关键字(中)
- c语言关键字(下)
- C语言笔记(关键字)
- C语言在8051单片机上的扩展(interrupt、using关键字的用法)
- C语言在8051单片机上的扩展(interrupt、using关键字的用法)
- 【C语言】C语言关键字
- C语言学习笔记 (一) C语言的关键字
- C语言register关键字—最快的关键字(转)
- C语言的关键字(13)
- Cg(C for Graphic)语言关键字
- C语言32个关键字(转)
- C语言关键字学习(1)----- extern
- c语言typeof关键字(GCC)
- c语言保留字(关键字)汇总
- C语言之关键字(一)
- PHP实现文件下载断点续传详解
- C++判断两个字符串是否互为旋转词
- 自定义view画圆
- nyoj845无主之地1
- Android群英传学习——ListView优化
- c语言关键字(上)
- 了解MVC、MVP于MVVM的区别
- Pandas时间序列
- Spring源码之JdbcTemplate中的坑,你中招了吗
- 活用宏定义
- LeetCode 338
- 简单的通信(QUdpSocket、 QTcpSocket、QWebSocket)-----Qt网络
- 自定义View+点击生成随机数
- openedx 配置 SMTP