C语言深度解剖-关键字(1)

news/2024/11/16 3:48:02/

目录

1.初步了解关键字

2.第一个C程序

3.深刻理解变量

是什么?

怎么用?

为什么?

4.深刻理解定义与声明

5.auto关键字的理解

6.理解关键字register

认识:

本质:

register 修饰变量

写在最后:


1.初步了解关键字

C语言一共多少个关键字呢?

现在主流的编译器大多支持C90(C89)的标准,

所以我们认为C语言的关键字有32个。

如下:

auto :    声明自动变量   

short :   声明短整型变量或函数   

int:        声明整型变量或函数

long :    声明长整型变量或函数   

float:     声明浮点型变量或函数   

double :声明双精度变量或函数   

char :    声明字符型变量或函数   

struct:   声明结构体变量或函数   

union:   声明共用数据类型   

enum :  声明枚举类型   

typedef:用以给数据类型取别名   

const :  声明只读变量   

unsigned:声明无符号类型变量或函数   

signed:  声明有符号类型变量或函数   

extern:  声明变量是在其他文件正声明   

register:声明寄存器变量   

static :   声明静态变量   

volatile: 说明变量在程序执行中可被隐含地改变   

void :     声明函数无返回值或无参数,声明无类型指针   

if:             条件语句   

else :    条件语句否定分支(与 if 连用)   

switch :  用于开关语句   

case:    开关语句分支   

for:       一种循环语句   

do :      循环语句的循环体   

while : 循环语句的循环条件   

goto:   无条件跳转语句   

continue:结束当前循环,开始下一轮循环   

break:  跳出当前循环   

default:开关语句中的“其他”分支   

sizeof : 计算数据类型长度   

return : 子程序返回语句(可以带参数,也可不带参数)循环条件

2.第一个C程序

#include <stdio.h>//文本代码->可执行程序(二进制文件)->双击启动该程序
//生成可执行程序并运行
int main()
{printf("hello world!\n");return 0;
}

输出:

输出:hello world!

在编译代码后,在文件中产生的exe后缀的文件双击就能运行出一样的结果。

在win中,双击的本质是运行程序,将程序加载到内存,

任何程序被运行之前都要被加载到内存中。

注:

1.程序没有被加载的时候,存放在硬盘中。

2.程序加载到内存中的原因是内存运行速度快。

3.深刻理解变量

是什么?

变量是在程序运行时,在栈上开辟的的内存空间。        

所以:所有变量本质都是在内存中某个位置开辟空间。

怎么用?

int main()
{//初始化int a = 10;double b = 1.0;char c = 'c';//赋值c = 'd';return 0;
}

为什么?

计算机是为了解决人计算能力不足的问题而诞生的。

即,计算机是为了计算数据。

而计算数据不一定是一下子用完全部数据,

换句话说,为何需要变量?因为有数据需要暂时被保存起来,等待后续使用。

4.深刻理解定义与声明

1.定义变量的本质:在内存中开辟一块空间,用来保存数据

2.定义只有一次,声明可以有多次。

5.auto关键字的理解

auto是用来修饰局部变量的:

例:

#include <stdio.h>int main()
{for (int i = 0; i < 10; i++){printf("%d ", i);if (1){auto int j = 0; //自动变量printf("%d ", j);j += 1;printf("%d \n", j);}}return 0;
}

输出:

输出:
0 0 1
1 0 1
2 0 1
3 0 1
4 0 1
5 0 1
6 0 1
7 0 1
8 0 1
9 0 1

总结:

auto 现在几乎已经没有人用了,它的修饰作用可有可无。

6.理解关键字register

register 是寄存器的意思

认识:

距离CPU越近的存储硬件,速度越快。

而CPU内集成了一组存储硬件即可,这组硬件叫做寄存器

本质:

在硬件层面上,为提高计算机的运算效率,从寄存器中读取数据。

register 修饰变量

 尽量将所修饰变量,放入CPU寄存区中,从而达到提高效率的目的。

例:

#include <stdio.h>int main()
{register int a = 10;printf("%d\n", a);return 0;
}

输出:

输出:10

注:

1.采用寄存器的变量不能取地址(&)。

2.最好是局部变量(全局会导致CPU寄存器被长时间占用)。

3.最好是高频被读取的变量(提高效率所在)。

4.寄存器数量有限,不能大量使用。

写在最后:

以上就是本篇文章的内容了,感谢你的阅读。

如果喜欢本文的话,欢迎点赞和评论,写下你的见解。

如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。

之后我还会输出更多高质量内容,欢迎收看。


http://www.ppmy.cn/news/19630.html

相关文章

Python装饰器使用方法详解

文章目录1 装饰器背景知识1.1 基本概念1.2 应用场景2 简单的装饰器代码3 使用装饰器记录函数执行次数4 带参数的装饰器5 装饰器处理有返回值的函数1 装饰器背景知识 1.1 基本概念 装饰器&#xff08;Decorator&#xff09;是 Python 中一种函数或类&#xff0c;用来修饰其他函…

Redis消息队列 | 黑马点评

目录 一、认识消息队列 二、List模拟消息队列 三、PubSub的消息队列 四、Stream的消息队列&#xff08;重点&#xff09; 1、单消费模式 2、消费者组 五、redis三种消息队列对比 六、优化秒杀实战 1、创建消息队列 2、修改下单脚本 3、接收消息处理 一、认识消息队列 …

APT之木马静态免杀

前言 这篇文章主要是记录手动编写代码进行木马免杀&#xff0c;使用工具也可以免杀&#xff0c;只不过太脚本小子了&#xff0c;而且工具的特征也容易被杀软抓到&#xff0c;指不定哪天就用不了了&#xff0c;所以要学一下手动去免杀木马&#xff0c;也方便以后开发一个只属于…

游戏启动器:LaunchBox Premium with Big Box v13.1

LaunchBox知道您会喜欢的功能&#xff0c;具有风格的游戏启动器&#xff0c;我们最初将 Launchbox 构建为 DOSBox 的一个有吸引力的前端&#xff0c;但它现在拥有对现代游戏和复古游戏模拟的支持。我们让您的所有游戏看起来都很漂亮。 整理您的游戏收藏 我们不仅漂亮&#xff…

第五十六章 历史监视器 - 基本指标

文章目录第五十六章 历史监视器基本指标收集数据第五十六章 历史监视器 History Monitor 维护性能和系统使用指标的历史数据库。其主要目的是&#xff1a; 提供性能基准并帮助分析性能问题。帮助分析一段时间内的系统使用情况以进行容量规划。 该数据库在 SYS.History 类包中…

提权漏洞和域渗透历史漏洞整理

Windows提权在线辅助工具 https://i.hacking8.com/tiquan/&#x1f334;Kernel privilege escalation vulnerability collection, with compilation environment, demo GIF map, vulnerability details, executable file (提权漏洞合集) https://github.com/Ascotbe/Kernelhu…

Java---微服务---elasticsearch安装部署

elasticsearch安装部署1.部署单点es1.1.创建网络1.2.加载镜像1.3.运行2.部署kibana2.1.部署2.2.DevTools3.安装IK分词器3.1.在线安装ik插件&#xff08;较慢&#xff09;3.2.离线安装ik插件&#xff08;推荐&#xff09;1&#xff09;查看数据卷目录2&#xff09;下载并解压缩分…

机器学习(七):Azure机器学习模型搭建实验

文章目录 Azure机器学习模型搭建实验 前言 Azure平台简介 Azure机器学习实验 Azure机器学习模型搭建实验 前言 了解Azure机器学习平台&#xff0c;知道机器学习流程。 Azure平台简介 Azure Machine Learning&#xff08;简称“AML”&#xff09;是微软在其公有云Azure上推…