
C语言基础知识
文章平均质量分 92
C语言知识学习
凡人多烦事~
这个作者很懒,什么都没留下…
展开
-
C语言之预处理详解
C语言设置了一些预定义符号,可以直接使用,预定义福海也是在预处理期间处理的int main()//当前被编译文件的路径//文件被编译的日期//文件被编译的时间//文件当前的行号//说明VS不支持ANSIC基本语法:#define M100for;;//死循环break;case// 如果定义的 stuff过⻓,可以分成⼏⾏写,除了最后⼀⾏外,每⾏的后⾯都加⼀个反斜杠(续⾏符)。printf;) //死循环 # define CASE break;原创 2024-02-11 16:59:03 · 1526 阅读 · 0 评论 -
C语言之:编译和链接
我们在test.c文件中每一次使用ADD函数和g_val的时候必须知道ADD 和g_val的地址,但是由于每个文件都是单独编译的,在编译器编译test.c的时候并不知道ADD函数和g_val变量的地址,所以暂时把调用ADD的指令的目标地址和g_val的地址搁置。前面的我们非常简洁的讲解了一个C的程序是如何编译和链接,到最终生成可执行程序的过程,其实很多内部的细节无法展开细说:比如:目标文件格式的elf,链接底层实现中的空间和地址分配,符号解析和重定位等。静态语义分析包括声明和类型的匹配,类型的转换等。原创 2024-02-10 14:26:49 · 699 阅读 · 1 评论 -
C语言之文件操作
磁盘上的文件是文件但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。原创 2024-02-09 13:33:31 · 1508 阅读 · 0 评论 -
C语言之动态内存管理
栈区:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等堆区:一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收。分配方式类似于链表数据段(静态区):存放全局变量、静态数据。程序结束后由系统释放代码段:存放函数体(类成员函数和全局函数)的二进制代码。原创 2024-02-07 14:28:53 · 1234 阅读 · 1 评论 -
C语言之自定义类型:联合和枚举
上述的结构其实这几的很简单,用起来也方便,但是结构的设计包含了所有礼品中的各种属性,液氧使得结构体大小就会偏大,比较浪费内存。因为对于礼品兑换单中的商品来说,只有部分属性信息是常用的。所有我们就可以把公共属性单独写出来,剩余各种商品本身的属性使用联合体起来,这样就可以介绍所需的内存空间,一定程度上节省了内存。联合的成员是共用同一块内存空间的,这样一个联合变脸的大小,至少是最大成员的大小(因为联合至少得有能力保存最大的那个成员)。在C语言中是可以的,但是在C++是不行的,C++的类型检查比较严格。原创 2024-02-06 15:09:59 · 732 阅读 · 0 评论 -
C语言之自定义类型:结构体
位段的成员必须是int、unsigned int 或signed int,在C99中位段成员的类型也可以选择其他类型位段的成员名后边有一个冒号和一个数字struct Aint _a : 2;int _b : 5;int main()//8A就是一个位段类型。位段A所占内存的大小是8字节。原创 2024-02-05 22:56:53 · 819 阅读 · 0 评论 -
C语言之数据在内存中的存储
其实超过一个字节的数据在内存中存储的时候,就有存储顺序的问题,按照不同的存储顺序,我们分为大端字节序存储和小端字节序存储,下面是具体的概念:大端(存储)模式:是指数据的低位字节内容保存在内存的高地址处,而数据的高位字节内容,保存在内存的低地址处。小端(存储)模式:是指数据的低位字节内容保存在内存的低地址处,而数据的高位字节内容,保存在内存的高地址处。上述概念需要记住,方便分辨大小端。原创 2024-02-04 15:32:02 · 1033 阅读 · 0 评论 -
C语言之内存函数
memset是用来设置内存的,将内存的值以字节为单位设置成想要的内容。比较ptr1和ptr2指针指向的位置开始,向后的num个字节。momcpy 拷贝的就是不重复的内存。memmove 拷贝的就是重复的内存。原创 2024-02-03 15:22:31 · 682 阅读 · 0 评论 -
C语言之字符函数和字符串函数
在不同的系统和C语言标准库的实现中都规定了一些错误代码,一般是放在errno.h这个头文件说明的,C语言程序启动的时候就会使用一个全面的变量errno来记录程序的当前错误码,只不过程序启动的时候erron是0,存放在erron中,而一个错误码的数字是整数很难理解是什么意思,所以每一个错误码都是有对应的错误信息的。\0 --------------> \ddd形式的转义字符,本质也是0,一般字符串的末尾会有\0是字符串的结束标志。//将参数传进去的大写字母转小写。0 --------------> 数字0。原创 2024-02-03 13:38:27 · 722 阅读 · 1 评论 -
C语言之深入理解指针(5)
指针题目练习原创 2024-02-01 14:00:28 · 723 阅读 · 1 评论 -
C语言之深入理解指针(4)
如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数。回调函数不是由该函数的实现方式直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。在修改后的代码,我们把调用的函数的地址以参数的形式传递过去,是函数指针接受,函数指针指向什么就调用什么函数,这里其实使用的计算hi回调函数的功能。在之前写的计算器的实现的代码中,有些代码是重复出现的,其中虽然执行计算的逻辑是区别的,但是输入输出。的指针,讲解void。原创 2024-01-31 14:59:21 · 398 阅读 · 0 评论 -
C语言之深入理解指针(3)
二维数组传参,形参的部分可以写成数组,也可以写成指针形式。原创 2024-01-30 15:42:31 · 743 阅读 · 1 评论 -
C语言之深入理解指针(2)
移位数组传参,形参的部分可以写成数组的形式,也可以写成指针的形式。原创 2024-01-29 16:07:28 · 707 阅读 · 0 评论 -
C语言之深⼊理解指针(1)
指针的类型决定了指针向前或者向后走一步有多大(距离)。原创 2024-01-28 16:40:22 · 953 阅读 · 1 评论 -
C语言之操作符
/代码1:变量的定义int x;int y;}p1;//声明类型的同时定义变量p1//定义结构体变量p2//代码2:初始化struct Stu//姓名int age;//年龄//初始化//指定顺序初始化//代码3int data;//结构体嵌套初始化//结构体嵌套初始化。原创 2024-01-26 20:25:04 · 803 阅读 · 0 评论 -
C语言之函数
了解了库函数,我们的关注应该聚焦在自定义函数上,自定义函数其实更加重要,也能给程序员写代码更多的创造性。函数的调⽤⼀定要满意,先声明后使⽤;函数的定义也是⼀种特殊的声明,所以如果函数定义放在调⽤之前也是可以的。原创 2023-10-30 00:02:57 · 71 阅读 · 1 评论 -
C语言之数组
C语言数组原创 2023-10-26 18:52:44 · 62 阅读 · 0 评论 -
C语言之分支循环语句
C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构。原创 2023-10-24 23:14:51 · 83 阅读 · 0 评论