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 命 ...
随机推荐
- 流行框架angular
---恢复内容开始--- 一.angular是什么 一款非常优秀的前端高级js框架,由谷歌团队负责开发 angular是通过新的属性和表达扩展了html angular可以构建一个单一页面应用程序(s ...
- c++数组易错点总结
c++数组 1.只有在定义数组是才能使用初始化,此后就不能使用了,也不能将一个数组赋给另一个数组 int cards[4] = { 3 , 6 , 8 , 10}; //ok int hands[4] ...
- Express 学习笔记纯干货(Routing、Middleware、托管静态文件、view engine 等等)
原始文章链接:http://www.lovebxm.com/2017/07/14/express-primer/ 1. Express 简介 Express 是基于 Node.js 平台,快速.开放. ...
- 包装类、数组、string类浅析及练习
String s1 = "abc"; String s2 = "abc"; System.out.println(s1==s2); //返回true Strin ...
- 实现一个栈类,类似STL中的栈
1.思路讲解 stack集合类是一个简单的堆栈的实现. 这里有两个模板参数,T和size,T用于指定堆栈中的元素类型,my_size用于表示堆栈中项数的最大值. 类中添加方法isempty.isful ...
- Python运维开发基础-概述-hello world
Hello World 任何一门计算机语言几乎都是从hello world开始的,为了遵从这一优秀的传统习惯,我们也从打印hello world开始. linux系统进入Python环境,直接打Pyt ...
- hdu_5963:朋友
刚看到这题时感觉是树上博弈,然后我开始用一维的数据找规律.发现在一维的树上,如果把各边的值合在一起当成一个二进制数,那么,ans只与奇偶性有关,于是,我提出了一个比较大胆的假设:若连接在root上的所 ...
- [C++ Calculator 项目] 基础运算实现
Calculator V1.1 注:这是C++计算器项目第二部分-运算 [基于初始部分增改而得] 源文件已上传至github 主要问题: Ⅰ.运算实现的问题在于( ) + - * /的优先级的处理,以 ...
- Github 的系统内部都在用什么开源软件?
有时候处理规模问题最好的办法就是让事情变得简单并尽你可能去避免出现这种情况.这是 GitHub 所采用的方法,林纳斯·托瓦兹(Linus Torvalds)在十年前开发了Git源代码控制工具,GitH ...
- 【MYSQL】ubuntu13安装mysql(转)
安装的是mysql-5.0.87-linux-i686-glibc23.tar.gz 1.解压tar.gz tar –xzf mysql-5.0.87-linux-i686-glibc23.tar.g ...