对C语言的关键字及部分关键字用法的简单理解
小盆友,你是否有很多问号???
C语言的关键字是什么?有哪些?他们如何用???
我也在学习中迷惑着,所以把今天学习到的稍微做一下总结,方便自己以后的复习(目前学到的比较粗浅,以后还需要深入学习)。
哪里有不对的还希望各位大佬不吝赐教,谢谢!
1、什么是C语言的关键字呢?
举个例子,我们学习中文的时候要学习汉字,学习英语的时候需要学习单词,先学习这些基本词汇,才能造句,才能写文章。相同的,作为一门编程语言,学习C语言时,就要先学习它的基本词汇(C语言的关键词),然后用其组成语句,再编写可以运行的程序。
2、C语言的关键词有哪些呢?
C语言(C99版)的标准规定的关键字有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
啊啊啊~这么多关键字都是什么意思呀??
好吧,因为我的English也是非常的poor,所以刚开始看到这些关键词也会一脸懵B。现在才慢慢了解了一些。
3、C语言的关键字的意思和用法?
auto :声明自动存储变量(一般省略)
break:跳出所在的局部语句(通常用在循环语句和开关语句中)
case:与switch、default搭配使用在switch语句中
char:声明数据类型——字符型
const:用于修饰变量,使其具有常属性,但本身仍然是一个变量
可以看出,本来变量i是可以直接被赋值的,加了const之后,不能直接被赋值了,所以具有了常属性;
创建数组时,用到了const修饰的i,结果报错中显示应输入常量表达式,证明i虽然被const修饰,但其仍然是一个变量。
continue:中断本次循环,并转向下一次循环
default:在switch语句中,代表默认处理
do:搭配while,形成do while循环语句,该循环语句的循环体
double:声明数据类型——双精度浮点型
else:搭配if,形成if else条件语句
enum:声明枚举类型(此处对枚举、段位和联合的对比:https://mp.csdn.net/console/editor/html/83314674)
extren:声明外部变量和符号
可以看出,如果需要调用其他源文件中的变量或函数时,就需要在当前源文件中用extern对其进行声明。
float:声明数据类型——浮点型
for:形成for循环语句
goto:形成goto语句,无条件跳转
if:搭配else,形成if else条件语句
int:声明数据类型——整型
long:声明数据类型——长整型
register:声明寄存器变量
该关键词建议将声明的变量放在寄存器中,方便使用。但是实际是否是寄存器变量需要编译器决定。不能对该变量进行&操作。因为&操作取的是内存的地址,而寄存器是独立于内存放置在CPU上的,无地址)
return:返回函数的返回值
short:声明数据类型——短整型
signed:声明有符号类型
sizeof:计算数据类型、变量或表达式所占字节数
(sizeof以及strlen的比较见链接:https://mp.csdn.net/console/editor/html/83241901)
static:声明静态变量
static声明的局部变量,改变了其生命周期(由局部变为整个程序(变长),在编译期间就开始创建),但作用域不变。
上图中的变量 j 未被static修饰前,其从test()中出来时即生命周期结束,下一个循环中重新创建;当被static修饰后,其生命周期延长至整个程序的结束,作用域仍仅限与test()中。
static声明的全局变量,改变了其作用域(由整个工程变为当前源文件(变小)),但生命周期不变。
可以看到,work.c中的变量year被static修饰后,在test.c中无法调用。所以其作用域变为仅在其所在的源文件中,但是变量year仍然是全局变量,所以其生命周期未改变。
全局变量和静态变量都存储在静态区;
函数和全局变量都具有外部链接属性,可以被当前源文件之外的源文件调用和使用,但是用static修饰之后,仅具有内部链接属性了。而局部变量无连接属性。
struct:声明结构体类型(与上述枚举进行过对比)
switch:搭配case和fault使用,构成switch语句
typedef:类型重定义/命名(eg:typedef unsiged int uint)unsiged int等于uint
union:声明联合类型(与上述枚举、和结构体进行过对比)
unsigned:声明无符号类型
void:定义无类型
volatile:保存内存可见性(该变量在程序中执行中可被隐含地改变)
在C语言中,对const修饰的常变量可通过地址对该变量的值进行修改。
但是,在C++中因为该变量被const修饰,所以编译器认为该变量的值不会被修改,所以将该变量的及其值备份后,在寄存器中放了一份。所以通过地址将该变量改变后,不会在运行结果中体现。
当C++中,对该常变量加上关键词volatile,可以让编译器每次访问内存中的该变量,而不是访问寄存器中的备份。所以,对通过地址对其修改后运行结果会发生改变。
while:搭配do使用,构成do while语句
好啦,算是大概对C语言的关键词大概浅显的梳理了一下,希望各位大佬不吝赐教哈。
对C语言的关键字及部分关键字用法的简单理解相关推荐
- 016+limou+C语言常用的32个关键字
0.前言 本博文是在对C语言有一定深入了解后,对C语言最为主要的32个关键字进行了简要的概述和一些容易被忽略的细节研究,您可以当作学习或复习C语言基础使用(毕竟关键字就是构成C语言语法的基石),也可以 ...
- c语言关键字_C语言初学者必须掌握的关键字!
相信这么努力的你 已经星标了我 老九学堂 你身边的IT导师 其实小伙伴在写代码的时候,关键字还是用的比较多的, 今天大雄主要就平常中用到的常用关键字进行总结,便于小伙伴们更全面的理解其在代码中的意图 ...
- C语言再学习 -- 存储类型关键字
定义: 是对声明的实现或者实例化.连接器(linker)需要它(定义)来引用内存实体.与上面的声明相应的定义如下:参看:C语言再学习 -- 存储类.链接 C语言中有 5 个作为存储类说明符的关键字,分 ...
- js与c语言效率_JavaScript控制流及关键字与C语言之比较
学习JavaScript控制流及关键字概念前,对有过C语言学习经验的同学来说,那么关键字,控制语句概念并不陌生.我们先来看看C语言吧: C语言的32个关键字和9种控制语句 9种控制语句: if.if- ...
- python语言中不用来定义函数的关键字_Python 语言中用来定义函数的关键字是
Python 语言中用来定义函数的关键字是 答:def 调查问卷采集是数据采集人员通过设计具有针对性的问卷,采用方式进行信息采集 答:以上都是 中国大学MOOC: 突出重点,必须以解决问题为目标.也就 ...
- java异常处理机简答题,【简答题】JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义?...
[简答题]JAVA 语言如何进行异常处理,关键字: throws,throw,try,catch,finally 分别代表什么意义? 更多相关问题 用蒸汽进行设备管线吹扫时,应将被吹扫的设备管线,相应 ...
- (1)c语言学习总结之从关键字到循环结构
一.关键字和标示符 1.关键字:c规定的有特殊含义的单词(也就是系统起的名字),全部是小写,有32个; 由关键字引出数据类型和流程类型 1.分类: (1)数据类型:整型用int标示,字符型用char表 ...
- C语言——变量篇(一)变量关键字static、auto、extern、register
前言:笔者最近在看C语言时候遇到了一堆关键字,auto,static,extern,register等等.看上去头皮发麻,在这里整理一下,便于自己理解. 全局变量和局部变量 关于全局变量和局部变量,笔 ...
- 【C语言你真的学会了吗】C语言深度剖析(1)【关键字深度剖析】
目标: 初步了解关键字分类 深刻理解变量 深刻理解定义与声明 auto关键字的理解 站在存储结构角度,理解register关键字 目录 1.关键字分类 2.第一个C程序(补充内容) 3.变量的定义和声 ...
最新文章
- java反射的性能_java反射的性能问题
- 在if里赋值要注意=和==的优先级,==优先于=
- [LeetCode] Valid Anagram - 字符串排序比较系列
- python 持续集成工具_持续集成工具: Jenkins学习
- linux 打zip gz tar,linux把文件压缩成.tar.gz的命令 | PT Ubuntu Blog
- 如何在 OS X Yosemite 中安装 Java
- 转一个高内存定位的文章
- 计算机视觉工作项目方案设计,机器视觉(项目方案设计案例)47.pdf
- Android万能使用WebServices(不用引入外部包)
- 操作系统动态分区分配方式C/C++语言(首次适应算法(FF)循环首次适应算法(NF)最best适应算法(BF)最坏适应算法(WF))
- U盘文件数据恢复工具如何使用
- 基于ROS的机器人设计
- Control.DataBinding数据绑定细解
- VScode 直接运行ts文件
- 一款好用的应用程序打包工具
- 可以运行python的路由器_用python控制你的路由器
- 王兴是怎么看待共享单车这块业务的
- 万字长文简单明了的介绍xxl-job以及quartz
- android电量百分比,Android P 状态栏显示电量百分比
- 跨网络加密软件部署办法--动态域名NAT
热门文章
- ERP软件定制开发需注意哪些问题?ERP定制开发要多长时间?
- PXE-MOF:EXITING INTEL PXE ROM是什么意思
- 【转载】新韭菜日记22----20190304股市学习--帖子是转载的,持续学习
- android原生见缝插针游戏自定义控件源码
- 用python获取图形对象的坐标集合
- Linux ubuntu gtest googletest download compile apply TEST TEST_F TEST_P
- 心向天蓝,Python学习第一章之列表一
- hosts文件及域名解析过程
- 张涵诚对于大数据在旅游业的应用场景分享
- Human-Level Control Through Deep Reinforcement Learning论文解读