目标:

  • 初步了解关键字分类
  • 深刻理解变量
  • 深刻理解定义与声明
  • auto关键字的理解
  • 站在存储结构角度,理解register关键字

目录

1.关键字分类

2.第一个C程序(补充内容)

3.变量的定义和声明

3.1 什么是变量

3.2 怎么定义变量

3.3 为什么要定义变量

3.4 变量定义与声明的差别

4.最宽宏大量的关键字---auto关键字

4.1 变量的分类

4.2 变量的作用域

4.3 变量的生命周期

4.4 作用域VS生命周期

4.5 auto相关

5. 最快的关键字-register

5.1存储金字塔

5.3 寄存器存在的本质

5.4 register修饰变量


1.关键字分类

关键字 说明
auto 声明自动变量
short 声明短整形变量或函数
int 声明整形变量或函数
long 声明长整型常量或函数
float 声明浮点型变量或函数
double 声明双精度变量或函数
char 声明字符型变量或函数
struct 声明结构体变量或函数
union 声明共享数据类型
enum 声明枚举类型
typedef 用以给数据类型起别名
const 声明只读变量
unsigined 声明无符号变量或函数
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>
#include<Windows.h>
/*在编译的时候,把文本代码 --> 可执行程序(二进制文件)->windows下双击可以执行文件*/
//编译执行 就会生成解决方案,清理解决方案 生成的那些文件就没了
int main()
{printf("hello world\n");system("pause");//如果用VS2013 不会自动停屏,需要用system防止程序一闪而过return 0;}

扩充知识:

1.我们写出来的代码是文本代码,而点击编译执行的时候,编译器会把文本代码转化为二进制文件

也就是.exe(可执行程序),而要找到这个文件,只需要打开当前文件夹下的Debug文件夹

如图:

而双击.exe就会运行刚才我们所写的代码:

如果点击清理解决方案,那么观察文件夹 发现什么都没了!

2.

  • Windows当中,双击程序本质就是运行程序。那么运行程序的本质又是什么呢?

运行程序的本质就是将程序加载到内存当中

  • 任何程序在运行之前都必须要先加载到内存当中

夺命二连问:

① 为什么程序在运行之前必须先加载到内存当中?

CPU和内存交互比较快,与硬盘交互慢--- 快!

        (冯诺依曼硬件体系结构规定的必须先加载到内存中)

② 程序在被加载到内存之前,他在哪?

程序没有被加载的时候,在硬盘当中

这里需要用画图说明一下:

冯诺依曼体系结构:

3.变量的定义和声明

3.1 什么是变量

变量就是在内存中开辟特定大小的空间,用来保存数据

所有的变量,本质都是在内存中的某个位置开辟空间的!

那么变量可以在硬盘中开辟吗?

不可以!因为变量是程序运行的时候进行开辟的,而程序运行的时候,已经被加载到内存中了

所以变量一定是在内存中的!

而为什么是某个位置,因为我们是不知道的,是由操作系统随机分配的一个位置

3.2 怎么定义变量

  • 定义变量的时候初始化
char c='a';
double d=3.14;

这种定义方式是开辟空间的时候,所开辟的空间的里直接放入内容(变量与生俱来的)

  • 定义好变量,然后再赋值
char c;
c='d';

这种定义方式是先开辟号一个空间 也就是变量c

然后 把d放到已经存在的空间里面

这两种定义方式没有本质的区别,这里只有在C语言的结构体部分才会有一些明显差别

3.3 为什么要定义变量

首先我们要知道,计算机是为了解决人类计算能力不足而产生的,也就是计算机是为了

进行计算的。

而计算就需要数据,但是计算过程中并不是所有的数据都立马需要被计算,有一些数据是需要先保存起来等待后续的处理的,所以利用变量是为了暂时保存数据

 硬盘中的数据被加载到内存当中之后,是一次加载了很多数据,但是CPU一次只会处理一个数据!所以没有被CPU处理的数据就需要暂时存储起来,以便后续的处理

3.4 变量定义与声明的差别

定义:开辟空间

声明:更多的是一种告知,告知编译器某个变量是已经被定义好的,不用考虑它是不是没有被定义,等到后面链接的时候,把所有内容和我的变量关联起来就好了

注意:

  • 定义只能有一次 (只能开辟一次空间)
  • 声明可以有多次

举个例子:表白只能表白一次,表白成功之后,你可以给多个人声明一下这是我的女朋友

【C语言你真的学会了吗】C语言深度剖析(1)【关键字深度剖析】相关推荐

  1. 人工智能用python还是java_学会java和python语言,可以开始搞人工智能吗?

    作为一名软件开发工程师,个人认为,当你学会Java和Phthon语言使用后,不建议你直接上手人工智能.下面我来说一下个人看法: 人工智能领域门槛较高 人工智能对于一般同学而言,其入门门槛相对较高,你虽 ...

  2. 《十天学会单片机和C语言编程》

    <十天学会单片机和C语言编程> 大家注意了这个文件只有最新版迅雷可以下载,下面的lesson几就是第几课.点击右键使用迅雷下载. ed2k://|file|[十天学会单片机和C语言编程]. ...

  3. 自学python能学成吗-没有任何编程基础可以直接学习python语言吗?学会后能够做什么?...

    很明确的说 python非常适合没有任何编程基础的人入门.. 目前应用最多的:全栈开发.数据分析.运维开发,今天我们就以这三个重点的岗位来做一下自学Python的规划,希望你在学之前就能有结果的来走得 ...

  4. c语言程序设计需要学多久,九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会...

    九江c语言编程学习,九江学c语言编程报班,九江学c语言编程一般要多久才能学会 首页 > C语言 > 九江c语言编程学习 作者:镀金池   发布时间:2017-10-18 14:11 据ID ...

  5. c语言编程学多久,丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会...

    丰城c语言编程学习,丰城学c语言编程的学校,丰城学c语言编程一般要多久才能学会 首页 > 软件 > 丰城c语言编程学习 作者:镀金池   发布时间:2018-04-09 16:40 在之后 ...

  6. vector之resize剖析-曾经的我以为自己真的学会了vector

    vector之resize剖析 零.前言 一.先看下面一段代码 二.测试结果 三.测试代码 零.前言 曾经的我以为自己真的学会了vector!人的认知有限,就以为自己什么都会了.当你深入研究一下时,才 ...

  7. python真的那么火吗-Python语言为什么这么火?

    Python现在已经成为一种非常常见的语言,特别是在当今的数据科学中,由于其易于读写,它越来越受到程序员的追捧.从市场的整体需求来看,对Python人才的需求逐年增加,人气也在逐步上升.那么Pytho ...

  8. 一小时过c语言,一小时学会C语言.docx

    PAGE \* MERGEFORMAT 14 C语言程序设计 第一课.认识C语言 C语言的特点 C语言是美国的Dennis Ritchie在1972年设计发明的.它由早期的编程语言BCPL(B语言)发 ...

  9. 超简单且免费体验的手机短信验证,三分钟学会(包含c语言、c++、python、java、php等语言)

    文章目录 简介. 一.短信平台 二.步骤 1.注册一个账号 2.下载接口文档 3.互亿在Java中的短信验证 总结 简介. 鄙人用的是Java,其他语言也可以用如:c语言.c++.python.jav ...

最新文章

  1. 深入理解JVM之二:垃圾收集器概述
  2. linux切换软件版本,Linux中dpkg工具update-alternatives实现符号链接软件版本的切换(转)...
  3. 用Javascript实现面向对象编程(封装,抽象,继承,多态)
  4. jsp调试,异常行数不匹配
  5. javascript 数组过滤重复对象
  6. UIAlertView 弹框
  7. 构建根文件系统_Linux之构建文件系统
  8. Rust : Tonic 基于Rust的gRPC实现
  9. diskgenius扩容c盘重启电脑卡住_用diskgenius更改分区参数的终止柱面,扩大C盘空间后...
  10. swing宾馆客房管理系统(文档)
  11. 【Love2d从青铜到王者】第十篇:Love2d之类和类的继承(Classes And Inheritance)
  12. 时间换算 将毫秒换算成时间
  13. matlab 理论力学,MATLAB理论力学/高等学校教材
  14. 分布电容和杂散电容_寄生电容与分布电容的区别
  15. html style属性的用法
  16. 苹果史上8款最失败产品
  17. Mysql出现问题:ERROR 2058: Plugin caching_sha2_passward could not be loaded解决方案
  18. RPG游戏-任务系统
  19. 牢记卖股票的四大纪律十项注意
  20. GUI(Graphical User Interface)—关于一道题的按钮事件处理知识点总结

热门文章

  1. 【离散数学】二元关系中的传递关系与非传递关系
  2. 广联达产品经理笔试题目
  3. “../28004x_generic_ram_lnk.cmd“,遇到RAM内存不够,需重新配置。
  4. 对象转SortedMap,字段按照首字母排序
  5. Flutter 实体类转String,String转实体类
  6. Python tkinter 保姆级超简易登陆界面教学
  7. 工业4.0细谈MES制造执行系统
  8. 计算机考研380分能上什么学校,考研总分500考380难吗 能上什么学校
  9. simulink仿真之比较产生阶梯波
  10. 计算机网络自顶向下方法(第六版) 课后题答案 | 第五章