| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> C++知识库 -> 关键字深度剖析集齐所有关键字可召唤神龙?【一】 -> 正文阅读 |
|
[C++知识库]关键字深度剖析集齐所有关键字可召唤神龙?【一】 |
关键字深度剖析,集齐所有关键字可召唤神龙?【一】从这篇博客开始,新开了一个专栏,学习《C语言深度剖析》,并记录学习笔记,只要为了补充c语言知识,也是为了进一步提高 接下来是本书的第一章关键字 学完本篇章的目标就是达到
在之前的学习中,一直认为C语言的关键字是有32个,其实那只是C90(C89) 的标准,也就是C99之前的数量,在后期的规则更新后,又新增了5个关键字,使得C语言能够完成更多任务。不过,目前主流的编译器,对C99 支持的并不好,我们后面默认情况,使用C90 即,认为32个。那么接下来让我们集齐32(37)颗"龙珠"召唤神龙🐉 0.Intro0.1 当我们写了一个c语言程序当我们在Windows双击一个程序的时候,发生了什么过程,其实在双击了某个程序之后,程序会被加载到内存当中
0.2 变量定义的本质
0.3 变量声明的本质在extern 关建字中细讲
0.4 关键字须知:关键字不能自己创建 关键字不能作为变量名使用
1.最宽宏大量的关键字 - auto先回忆一下几个概念
1.1 解释auto一般在代码块中定义的变量,即局部变量,默认都是auto修饰的,不过一般省略 后面我们所提到的,局部变量,自动变量,临时变量,都是一回事。我们统称局部变量
2. 最快的关键字 - register其实,CPU主要是负责进行计算的硬件单元,但是为了方便运算,一般第一步需要先把数据从内存读取到CPU内,那么也就需要CPU具有一定的数据临时存储能力。注意:CPU并不是当前要计算了,才把特定数据读到CPU里面,那样太慢了。所以现代CPU内,都集成了一组叫做寄存器的硬件,用来做临时数据的保存。 2.1 寄存器我们其实在基本上每一本操作系统的参考书第一章都能看到一个金字塔图 基本在顶端就是寄存器了 图源来自:点击传送 cpu速度很快,一般都先从寄存器来拿数据进行处理,所以说 2.1.1 寄存器存在的本质
2.2 register修饰变量
假如a是寄存器变量我们就用register修饰变量,一般修饰的这个变量是不可以使用&操作符的
3. 最名不符实的关键字 - static3.0 before static头文件的必要性 创建c’语言文件的时候我们会创建
为什么要有头文件?
头文件一般都是会被多个源文件包含的,所以说解决重复包含的时候可以用
如何在头文件中完成声明? 首先要知道声明是不需要开辟空间的,不开辟空间就最好不要设定初始值,因为赋值或者初始化就是会开辟空间,所以说
那么是否有在一个具体的场景中,有可能我们不想让全局变量或者函数跨文件访问,指向在本文件内部被访问?,于是引出 3.1 static 关键字在C语言中:
3.2 修饰局部变量
举个例子:
最后我打出来肯定是10个2,因为局部变量每次出了生命周期之后就销毁 但是假如我在test函数里面的原局部变量a用了一个修饰static 最后打出来就是
理解原因: 我们说,要了解原因应该知道,有三个重要的内存存放区域
static实质上改变了a的位置(栈–>静态),从而使得静态的局部变量出了其作用域也不销毁,那生命周期也改变,当程序结束之后该变量才会被销毁。 3.3 修饰全局变量和函数
我们说,假如我们要用来自其它部分的文件中的全局变量,是要先行声明的 用
倘若我有两个源文件时,这里就涉及到了外部文件 此时我用static修饰这个全局变量的话,就会报错 看起来似乎好像是作用域变小了,实则本质上并不是。 一个全局变量能在其他文件内部能被使用,是因为全局变量有特殊的属性,即可以被外部链接。但是被static修饰后效果是外部链接属性变成了内部链接属性,因此该全局变量在其他文件中不能被使用。
4. 最冤枉的关键字sizeof4.0 before sizeof回忆基本数据类型 如何看待数据类型? 定义一个变量,是需要类型的,这个是基本语法决定的。那么,类型决定了:变量开辟空间的大小。
4.1 被冤枉的sizeof冤枉点:常年被误认为库函数 其实不是,下面一个不报错说明了sizeof的实质
4.2 求自定义类型的大小sizeof 是可以计算自定义类型的大小的
5. signed、unsigned关键字5.0 before signed and unsigned5.0.1 回忆一下原码反码补码这块知识之前在c语言进阶栏目中提到过 之前在操作符一章中也有谈到过数据在内存中存储的时候有三种储存形式 整数的三种二进制表达形式
对于整数的3种形式我们有这样一个结论: 下面对一个整数5来举例 再对-5来举例 从这个例子我们可以看到
用VS调试看内存我们就可以直观看到 这里的 5.0.2 大端小端字节序大端与小端本质在于数据核空间按照字节为单位的一种映射关系 大端字节序: 一个数据的低字节的数据放在高地址处,高字节序的内容,放在了低地址处,这种存储方式叫做大端字节序 小端字节序: 一个数据的低字节的数据放在低地址处,高字节序的内容,放在了高地址处,这种存储方式叫做小端字节序 更细的总结敬请阅读C语言突破进阶-数据的存储
5.1 整形取值范围
为什么?特定数据类型,能表示的数据取值范围(范围由多个连续数据构成),本质是多位bit位形成的排列组合的的个数。
5.2 一个小栗子
5.3 再来一个小栗子
5.4 还有一个小栗子根据之前的知识来看为什么下面的一个程序停不下来呢
好了今天的内容就到这里了哈!!! 今天的“龙珠”集齐了6颗 很多关键字都是之前讲过的,今天再来一遍,当作复习巩固 下次继续,请持续关注 干净又卫生,别忘了一键三连 |
|
C++知识库 最新文章 |
【C++】友元、嵌套类、异常、RTTI、类型转换 |
通讯录的思路与实现(C语言) |
C++PrimerPlus 第七章 函数-C++的编程模块( |
Problem C: 算法9-9~9-12:平衡二叉树的基本 |
MSVC C++ UTF-8编程 |
C++进阶 多态原理 |
简单string类c++实现 |
我的年度总结 |
【C语言】以深厚地基筑伟岸高楼-基础篇(六 |
c语言常见错误合集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 12:46:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |