C/C++ 知识点---C语言关键字(32个)
C/C++ 知识点
1.C语言关键字(32个)
<1>.基本数据类型 [5]
void :声明函数无返回值或无参数,声明空类型指针
char :声明字符型变量
int :声明整形变量
float :声明浮点型变量
double :声明双精度变量
<2>.类型修饰关键字[4]
shot :声明短整型变量
long :声明双长整型变量
signed :声明有符号类型变量
unsigned:声明无符号类型变量
<3>.复杂类型关键字[4]
struct :声明结构体变量
union :声明联合数据类型
enum :声明枚举类型
typedef :用于数据类型取别名及其他用途
sizeof :计算对象所占内存空间大小
<4>.存储级别关键字[6]
auto :声明自动变量,一般编译器默认为缺省时为auto,通常在栈上分配
static :声明静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部
register :声明寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数
extern :声明外部变量或引用,编译器遇到此变量和函数时在其他模块中寻找其定义
const :声明只读变量,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)
volatile :说明变量在程序执行中可被隐式改变,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值
<5>.控制流关键字[13]
---跳转---
return :子程序返回语句
continue :结束当前循环,开始下一轮循环
break :跳出当前循环
goto :无条件跳转语句
---分支---
if :条件语句
else :条件语句否定分支(与if连用)
switch :开关语句
case :开关语句分支
default :开关语句“其他”分支
---循环---
for :其中一种循环语句
do :循环语句的循环体
while :循环语句的循环条件
2.static关键字
static关键字主要用于修饰局部静态变量、全局静态变量/函数,以及静态数据成员/成员函数(C++),主要起到生存期和作用域的限制作用及类中的唯一性;
<1>.按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区;
按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效;
也就是说把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域,限制了它的使用范围;
<2>.static函数在内存中只有一份,而普通函数在每个被调用中维持一份拷贝,函数前加static使得函数成为静态函数(内部函数),这时它的作用域仅局限于本文件;
<3>.类的静态成员函数只能访问类的静态成员(变量或函数);静态数据成员则标识变量/函数在此类中的唯一性,对此而言,成员函数不管是否是static,在内存中只有一个副本,普通成员函数调用时,需要传入this指针,static成员函数调用时,没有this指针;
3.extern关键字
extern关键字置于变量或函数前,用于提示编译器该变量或者函数在其他文件中定义,另外用来进行链接指定(extern "C"),告诉链接器在链接时用C函数规范来链接,解决编译生成的目标代码中名字匹配问题;
另外extern的使用要严格对应声明时的格式,例如源文件定义了数组类型char T[ARRAY_NUM],再另外的文件中如果声明用extern char *T,会导致非法内存访问错误,因为指向类型T的指针并不等价于类型T的数组,应该改为:extern char T[];
C/C++ 知识点---C语言关键字(32个)的更多相关文章
- C语言的32个关键字
由ANSI标准定义的C语言关键字共个: auto double int struct break else long switch case enum register typedef char ex ...
- FILE不是C语言关键字
FILE不是C语言关键字,只是标准C中的标准输入输出中定义的一个新的数据类型 stdio.htypedef struct _iobuf{ char* _ptr; int _cnt; char* _ba ...
- 李洪强漫谈iOS开发[C语言-009] - C语言关键字
// // main.m // 04 - C语言关键字 // // Created by vic fan on 16/7/12. // Copyright © 2016年 李洪强. All r ...
- c语言关键字总结
1.关键字变更历史 1999年12月16日,ISO推出了C99标准,该标准新增了5个C语言关键字: inline restrict _Bool _Complex _Imaginary(注意bool 从 ...
- 1.C语言关键字(auto break case char const swtich)
ANSI C标准C语言共有32个关键字,分别为: auto break case char const continue default do double else enum extern floa ...
- 回首C语言关键字(~回首向来萧瑟处~)
开篇废话: 本文意在回顾 C 语言中的关键字,整理文件发现当时做的这些笔记还是蛮用心的,有临摹 前辈的足迹也有自己的理解和体会.时至今日2018已经跨过一半,对不起过去半年,今天 拿这篇关键字开篇,开 ...
- C语言关键字之sizeof
C语言关键字 sizeof 是一个操作符,返回对象或类型所占内存字节数,类型为size_t(定义在<stddef.h>),有2种用法: sizeof unary-expression si ...
- C语言关键字-volatile
1.C语言关键字volatile C 语言关键字volatile(注意它是用来修饰变量而不是上面介绍的__volatile__)表明某个变量的值可能在外部被改变,因此对这些变量的存取 不能缓存 ...
- 执行Go程序的三种方式及Go语言关键字
执行 Go 程序的三种方式及 Go 语言关键字 执行 Go 程序的三种方式 一.使用 go run 命令 二.使用 go build 命令 Step1. 对 go 源码源文件执行 go build 命 ...
随机推荐
- KBEngine简单RPG-Demo源码解析(2)
七:服务端资产库文件夹结构http://kbengine.org/cn/docs/concepts/directorys.html看assets, 注意:demo使用的不是默认的assets资产目录, ...
- asp.net mvc视图中使用entitySet类型数据时提示出错
asp.net mvc5视图中使用entitySet类型数据时提示以下错误 检查了一下引用,发现已经引用了System.Data.Linq了,可是还是一直提示出错, 后来发现还需要在Views文件夹下 ...
- Django 学习笔记(二)
Django 第一个 Hello World 项目 经过上一篇的安装,我们已经拥有了Django 框架 1.选择项目默认存放的地址 默认地址是C:\Users\Lee,也就是进入cmd控制台的地址,创 ...
- (转载)CloseableHttpClient设置Timeout
参考文档: http://blog.csdn.net/zheng0518/article/details/46469051 https://segmentfault.com/a/11900000005 ...
- Spring中获取对象
Spring是一个非常主流,而且是好用的框架.提供管理对象的容器,提供事务的支持,缓存,权限认证(往往不用).用来集成hibernate等.而管理对象的生命周期是其中一个非常重要的功能.在Spring ...
- 谈谈关于PHP的代码安全相关的一些致命知识
谈谈关于PHP的代码安全相关的一些致命知识 目标 本教程讲解如何防御最常见的安全威胁:SQL 注入.操纵 GET 和 POST 变量.缓冲区溢出攻击.跨站点脚本攻击.浏览器内的数据操纵和远程表单提交. ...
- Excel无法vlookup事件
最近由于工作关系,深入的用了一阵excel,并遭遇和处理了一系列关于excel数据的问题. 其中最有趣的一个,就是一个无法vlookup的问题. 问题记录如下: excel中直接打开csv文件,看到类 ...
- serv-u中如何映射网络驱动器
用一台机器作服务器,但硬盘空间不足,想通过影射网络驱动器来实现ftp的空间扩容! 如何映射网络硬盘或文件? 首先打开我的电脑--工具选项--映射网络驱动器: 如图示: 在文件夹输入映射路径:\\XXX ...
- (转)Synchronized(对象锁)和Static Synchronized(类锁)的区别
场景:面试的时候经常用得到! 1 综述 Synchronized和Static Synchronized区别 一个是实例锁(锁在某一个实例对象上,如果该类是单例,那么该锁也具有全局锁的概念),一个是全 ...
- php的laravel框架使用心得
最近在做一项目,是基于laravel的后台api,用于与手机交互的,数据采用json格式.下面说下怎样在两周内把一个新框架或者语言用的得心应手. 项目采用laravel5.4+dingoapi+jwt ...