C语言深度剖析
文章平均质量分 67
深度解剖C语言的细节
qincjun
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
float类型在内存中的存储方式
1.整形的存储方式,就是以原码,反码,补码的方式,在内存中存储;5.5->101.1(二进制浮点数)->(-1)^0*1.011*2^2;举例:9->1001(二进制浮点数)->(-1)^0*1.001*2^3;2^E表示指数位(可以理解为将M向左扩大移()E位),而是还原为 0.xxxxxx的小数。(-1)^s表示符号位,当。这时,浮点数就采用下面的规则表示,即指数。但是,我们知道,科学计数法中的。,因此可以被舍去,只保存后面的。,等到读取的时候,再把第一位的。位, 则为1.0*2^(-1)原创 2024-07-21 21:08:35 · 2346 阅读 · 0 评论 -
C语言内置类型和自定义类型
自定义类型:自己创造的类型数组类型结构体类型 struct枚举类型 enum联合类型 union数组类型举个例子这两个数组的类型不一样,因为数组的元素个数发生了变化或元素的类型发生变化;所以数组也是自定义类型,根据实际情况来指定大小和类型;原创 2024-07-21 11:52:24 · 573 阅读 · 0 评论 -
自定义类型(构造类型)
enumColor//颜色RED, //这些可能取值都是有值的,默认从0开始,一次递增1,//当然在定义时候也可以赋初值。GREEN, //使用逗号隔开;BLUE例如enumColor//颜色RED=1GREEN=2BLUE=4。原创 2024-07-21 18:00:06 · 810 阅读 · 0 评论 -
文件I/O操作:C语言
阐述读取文件的过程:单纯的从C语言上讲,磁盘上的数据文件内容是先被内存读取,我们程序创建一个变量(char[]字符串类型),把读出来的数据赋予这个变量;磁盘上的数据文件先被内存读取,指的就是文件缓冲区先读取数据;3.文件I/O操作,所用的都是Linux的那一套基础核心理论,第一层的封装是C语言或C++;因为他俩在同一层上,只不过封装的实现操作不同,而且C++使用起来比C语言更简单,但是C语言的函数更有操作性,层次性,一步一步来;主要是将未写入文件的内容写入到文件中,未打印的文字,打印出来;原创 2024-12-22 19:51:20 · 1084 阅读 · 0 评论 -
文件I/O操作:C++
1.C++的三大特性是:封装、继承、多态;对于初学者来说,用的最多的是封装——给程序员一个函数,告诉他:参数是什么,函数可以实现什么功能,里面的函数是怎样实现的什么都不知道;这就是封装;2.继承和多态:继承和多态这种特性想真正的入门,在我看来要学习Qt;同学们就会理解什么是继承;这东西在课堂上是永远无法学会的;因为我刚接触Qt的时候,就被甩了一个闷棍;而且在项目中才理解了这两个特性;原创 2024-12-22 22:15:48 · 425 阅读 · 0 评论 -
struct和C++的类
1.1想看明白这章节,必须要懂得C语言的struct结构体、C语言深度解剖的static用法、理解声明与定义,C++的类和static用法;否则看起来有些吃力2.1struct结构体里面只能存储内置类型;比如:char、short、 int、float、int*等2.2static修饰局部变量,改变局部变量的生命周期,延长至全局;但是作用域不变(暂时不考虑使用指针操纵局部变量的情况)提出问题:在struct结构体中,使用static修饰局部变量,把他变为静态全局变量可以吗?答:错误,编译器报错,此处不能指定原创 2024-10-05 16:00:21 · 457 阅读 · 0 评论 -
关键字:sizeof
sizeof:确定一种类型对应开辟空间的时候的大小——说人话就是,编译器编译的时候,就直接统计了开辟空间的大小,开了多少空间就是多大;跟是否向其中写了数据没有关系;数组名只有在两种情况下代表的是整个数组,一个是取地址数组名;另一个是sizeof 单独使用数组;//sizeof是一个关键字,他不能直接去取另一个关键字的大小。原创 2024-10-06 12:53:52 · 386 阅读 · 0 评论 -
关键字:volatile
因为while语句中,并没有对flag进行修改,当在编译时,编译器可能自动优化代码,CPU在执行while判断时,不会再从对应的内存中读取数据,而是把这个flag数据直接拿到对应的寄存器中,不断的进行CPU检测;直接检测寄存器的值就可以了;——相对应的是,内存的变量永远不会被读取了,而是就近似的读取离cpu最近的寄存器(此情况是一种内存被覆盖的情况,cpu不再向内存中读取数据,而是向寄存器中读取数据。原创 2024-10-05 21:09:49 · 282 阅读 · 0 评论 -
关键字:static
1.1全局变量可以跨文件访问吗?答:可以;1.2函数可以跨文件访问吗?答:可以1.3在具体的应用场景中,程序员不想让全局变量或者函数跨文件访问,只在本文件内部被访问?答:可以——引出static关键字2.1static修饰全局变量,该变量只能在本文件内被访问,不能被外部其他文件直接访问;但是可以被间接访问——通过访问非static修饰的函数,访问static修饰的全局变量2.2static修饰函数,该函数只能在本文件内被访问,不能被外部其他文件直接访问;但是可以被间接访问——通过访问非static修饰的函数原创 2024-10-05 06:00:00 · 1436 阅读 · 0 评论 -
关键字:const
const 修饰函数返回值,如果用户不想函数返回值被别人通过指针来更改函数内部的一个变量,可以对返回值做const修饰,在外部接收的时候,采用同样的编码规则去接收;这样在后续的使用这个变量的时候,就无法做修改了;原创 2024-10-04 20:59:21 · 769 阅读 · 0 评论 -
关键字:extern
1.1什么是声明?答:1.告诉编译器,这个名字已经匹配到一块内存上了,如果要使用可以直接使用;在下方的代码中,用到的对应的变量或对象是在别的地方或文件定义的;且同一个声明可以出现多次,编译器不会报错;2.告诉编译器,这个名字已经预定了,别的地方再也不能用它来作为变量名或对象名。1.2什么是定义?答:1.当(编译器)创建一个对象,为这个对象分配一块内存并给它 取上一个名字,这个名字就是我们经常所说的变量名或对象名;但是,一个变量或对象在一定的区 域内(比如函数内,全局等)只能被定义一次,如果定义多次,编译器会原创 2024-10-04 20:16:47 · 369 阅读 · 0 评论 -
关键字:register
尽量。原创 2024-10-05 22:05:21 · 419 阅读 · 0 评论 -
C语言深度剖析:srand()/rand()/time()
1.srand()函数是一个设置随机数种子生成器的函数;2.根据函数的参数表示,诸位可以知道,参数是一个无符号int类型;中文名称叫做种子(一般称为随机数种子);所以srand()函数叫做随机数种子生成器;srand->set rand;3.rand()函数,才是随机数生成器(随机数生成 函数);4.rand()函数5.其中rand()函数运行时,会在[seed,RAND_MAX(0X7fff))区间内生成其中的随机整数;其中的seed就是srand()函数中,传进去的参数seed(随机数种子);如果用户在原创 2024-11-17 16:41:55 · 441 阅读 · 0 评论 -
C语言深度剖析:原反补码
直接将二进制按照正负数的形式翻译成二进制就可以。将原码的符号位不变,其他位依次按位取反就可以得到了。反码+1就得到补码。原创 2024-11-16 20:21:39 · 401 阅读 · 0 评论 -
C语言深度剖析:定义与声明
我敢于诸君打赌,定义与声明,诸君肯定都会,但是绝对说不清123;因为我在学校里学习的时候;也是不知其所以然;直到自己遇见了一位老师,看了《C语言深度剖析》这一本书;我们在学习C语言或者C++时,都会听到一个概念,叫做“左值、右值”;在写程序时,会看到编译器报错:左值不能为0等等;(C++的移动构造,诸位看吧,一看一个不吱声;) 举例:其他人就会问,如何区分定义与声明呢?答:使用extern关键字;来区分;原创 2024-11-22 15:56:19 · 298 阅读 · 0 评论 -
C语言深度剖析:32个关键字
void 声明函数无返回值或无参数,声明空类型指针。extern 声明变量是在其他文件正声明(int 声明整型变量。short 声明短整型变量。原创 2024-11-22 15:03:18 · 488 阅读 · 0 评论
分享