
C语言知识点
文章平均质量分 75
C语言中内容梳理
CR0712
welcome to C
展开
-
C语言程序环境(翻译+执行)
我们对C语言有了一定的了解之后会不会思考,我们写出来的源文件通过怎样的处理就在黑框框中显示出来, 变得可执行了呢?原创 2023-04-03 17:29:17 · 638 阅读 · 1 评论 -
柔性数组——C语言
这就叫做柔性数组 (flexible array)成员 (也叫伸缩性数组成员)。而定义的 arr 就是柔性数组成员。原创 2023-03-26 16:16:26 · 244 阅读 · 4 评论 -
动态内存分配
在谈到动态内存分配之前我们就要谈谈C语言中的内存分配了:栈区 堆区 静态区:全局变量、static(关键字)声明的变量存储,在程序的整个生命周期都存在,程序结束,内存自动释放。:局部变量、形参存储(自动,连续的内存)出了作用域内存释放。:动态存储(非常大的内存池,非连续分配)可以自己分配任意大小的空间(不要超出最大空间范围),但要及时释放(手动),如果在变量使用结束时释放内存失败或未释放的话会造成内存泄漏,内存仍然被占用,不能被其它进程获取。原创 2023-03-24 22:21:42 · 499 阅读 · 6 评论 -
联合体(共用体)
联合也是一种特殊的自定义类型,该类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(因此也叫共用体)联合的成员是共用同一块内存空间的,这样的一个联合变量的大小。,它提供了一种方式,以在单块存储区中管理不同类型的数据。因为联合体的成员是共用一块空间,并且空间大小最少是。:共用体(union),也称为联合体,是。(因为联合体至少得有能力保存最大的成员)原创 2023-03-22 17:12:31 · 391 阅读 · 11 评论 -
结构体类型的大小与位段
1.结构体的第一个成员放在0偏移处。(就是存放结构体类型的第一个字节空间处)2.从第二个成员开始,之后的每一个成员都要对齐到某个对齐数的整数倍处。 该对齐数是:成员自身大小和默认对齐数的较小值(VS的默认对齐数是8)(gcc无默认 对齐数)3.当成员全部存放进去之后,结构体的总大小必须是所有成员中最大对齐数的整数倍。 (如果不够整数倍就浪费内存也要空间对齐)4.如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍,结构体的整.......原创 2023-03-20 13:10:48 · 438 阅读 · 6 评论 -
匿名结构体与结构体的引用
这里的struct 是结构体关键字,struct book 连在一起就是你定义的结构体类型。那么把 book 省略的话,又是个啥呢?以上创建的变量中 s1 就可以实现,而 s2变量的创建就是不合理的,因为匿名结构体类型名是“匿名的”,struct 并不是匿名结构体的类型名,所以这样创建出的局部变量 s2 是行不通的,所以说使用匿名结构体类型创建出来的变量都是全局变量。//如果你想对匿名结构体类型进行 typedef 重命名再创建变量的话那就是可以的了。原创 2023-03-19 14:29:11 · 741 阅读 · 7 评论 -
模拟实现字符串函数与内存函数——strcat,strcmp,strstr memcpy,memmove
进入MSDN中查阅该函数的返回值是 char* 类型的,因此返回一个字符指针。两个参数也是 char* 类型的,不过第二个参数是常量指针,指向的值不可改变。这里就解释两个参数的意义,大致意思就是说:将第二个参数(源字符空间)的内容追加到第一个参数(目标字符空间)的内容后面,也就是遍历第一个参数内容到\0的位置开始追加。原创 2023-03-12 16:23:10 · 348 阅读 · 2 评论 -
函数指针及函数指针的夹层外套
函数其实也是有地址的,函数名就是函数的地址,&函数名也是函数的地址。所以就存在函数指针,而有了函数指针就有函数指针数组,那有了函数指针数组,不就又有了指向函数指针数组的指针了嘛,这不就成了套娃吗。原创 2023-02-24 23:01:37 · 191 阅读 · 0 评论 -
指针详解(字符指针、数组指针,指针数组)
我们知道一维数组的数组名就是首元素的地址,那么二维数组的数组名呢——同样是首元素的地址。数组指针p就相当于&arr,我们知道&arr取出的是整个数组的地址,加一就跳过一个数组类型的地址,在这里就是4*10个字节的空间。:当然是数组啦,指针只是它的类型而已,存放的是指针,是指向指针的数组。*p就相当于 * &arr,那么*p 不就等价于arr(数组名,首元素地址嘛)那么((*p)+i)不就是(arr+i)嘛。有了这些了解,那么二维数组传参,传的是首行元素的地址,那么不就得用数组指针来接收嘛。原创 2023-02-23 19:01:32 · 209 阅读 · 0 评论 -
整型在内存的使用与浮点型在内存的存储
我们知道数据的基本类型分两大类 整型和浮点型,那么讲讲它们分别是如何在内存中存储的吧。原创 2023-02-21 21:57:44 · 307 阅读 · 0 评论 -
数据存储时的大小端解析
首先大小端存储指的对象是单个数据在内存中存储时的模式。原创 2023-02-15 23:10:24 · 485 阅读 · 0 评论 -
野指针的成因以及指针运算
一个变量有它的类型 int short double float ……那么一个指针有没有属于它的类型呢?当然有啦,但是不同的指针类型的指针大小都是4/8个字节大小。原创 2023-02-09 17:56:19 · 213 阅读 · 0 评论 -
C语言 ——隐式类型转换和算数转换
表达式求值顺序一般是按照操作符的优先级顺序来决定,但是,有些表达式求值的过程中还涉及到类型的转换与统一,涉及隐式类型转换和算术转换。原创 2023-02-09 16:53:58 · 285 阅读 · 0 评论 -
C语言 —— 操作符详解
在学习这章节之前呢,咱们先了解一下操作符的分类(有哪些操作符)原创 2023-02-08 17:03:33 · 385 阅读 · 0 评论 -
#define与typedef的区别
typedef用来定义类型的别名,起到类型易于记忆的功能。如定义一个REAL的浮点类型,在目标机器上它可以获得最高的精度:typedef long double REAL, 在不支持long double的机器上,看起来是这样的,typedef double REAL,在不支持double的机器上,是这样的,typedef float REAL。#define是C语言中定义的语法,是预处理指令,在预处理时进行简单而机械的字符串替换,不作正确性检查,只有在编译已被展开的源程序时才会发现可能的错误并报错。原创 2023-01-29 19:50:36 · 3459 阅读 · 3 评论 -
C语言常量的解析
C语言常量解析原创 2023-01-04 15:13:45 · 270 阅读 · 0 评论 -
C语言之关键字static的作用(深度刨析)
C语言static的解析原创 2023-01-07 15:41:47 · 488 阅读 · 1 评论 -
C语言-getchar/putchar详解
getchar 是一个输入函数,接收的是单个字符,并且是有返回值的,但是返回值是由int来接收的(比较合理)因为 getchar 接收字符,返回的是ASCLL码值。如果读取失败的话返回EOF(-1).putchar功能putchar 是输出函数,输出的是字符。getchar执行原理当编译器执行到 getchar 这一行时会等待你从键盘中输入的值,但是getchar并不是从你的键盘中拿到数据的,而是从你的输入缓冲区中拿到数据。而你从键盘中输入的数值会进入到输入缓冲区当中去。原创 2023-01-08 20:09:55 · 1643 阅读 · 0 评论 -
C语言指针详解
这就与我们的电脑硬件有关了,假设我们电脑是32位机器,那么在32位机器上就有32根地址线(电线),在运行时会被通电,也就产生了高电频与低电频两种电信号,转换成数字型号就是。又因为是在32根地址线上,那么很容易知道会有2的32次方种情况,那么也就是我们的内存单元的编号了。,也就是四个内存单元,而我们的每个内存单元都有一个对应的编号(地址),那么哪一个才是我们a的。内存中本来放的是二进制的数字,但为了更好的展示出来,是用十六进制的数字展示的。内存是电脑上的存储器,计算机中的程序运行都是在内存中进行的。原创 2023-01-11 15:58:28 · 199 阅读 · 0 评论