C语言
文章平均质量分 67
如有错误,还望不吝指正。
马大大~
这个作者很懒,什么都没留下…
展开
-
C-文件操作
文件位置指针它指向文件中即将要读取的数据,以"r"、"r+“方式打开文件,文件位置指针指向文件的开头,以"a”、"a+"方式打开文件,文件位置指针指向文件的末尾。 读取数据时会从 文件位置指针指向 的地方开始读取,写入数据时也会写入到文件位置指针所指向的地址,并且它会随着读写操作自动移动。注意:刚写完数据立即读取会失败,因为这时文件位置指针指向文件的末尾。优点:数据我们能看懂,方便查看是否出错。二进制文件:把数据的补码直接写入文件。缺点:读写速度慢、有被他人修改的风险。优点:读写速度快、安全性高。原创 2023-08-15 22:56:35 · 31 阅读 · 0 评论 -
C预处理指令
_FILE__ 获取当前文件名 __func__ 获取当前函数名 __LINE__ 获取当前行号 __DATE__ 获取当前日期 __TIME__ 获取当前时间 //编译时的时间 __WORDSIZE 获取当前编译器的位数 // 我们DEBUG时,适合用来显示警告、错误信息。/*test.cmain822:37:35*/// limits.h 头文件中定义的所有整数类型最大值、最小值128127255。原创 2023-08-14 23:26:55 · 59 阅读 · 0 评论 -
堆内存管理
2、如果size等于0,返回NULL或唯一的一个地址,并且该地址可以通过free释放而不出错,但不能使用它指向的内存。C标准库中提供一套管理堆内存的函数,这些函数底层封装了各操作系统的堆内存管理接口,所以可以跨平台使用,这些函数声明在。2、free的参数可以是空指针,不会出现错误,也不会执行任何操作,也能看出空指针比野指针安全。2、free的参数可以是空指针,不会出现错误,也不会执行任何操作,也能看出空指针比野指针安全。所以,第一次释放内存后,要把指针及时的赋值为空,防止重复释放产生的错误。原创 2023-08-12 22:47:10 · 38 阅读 · 1 评论 -
C语言结构体
结构体是什么?简单来说,结构体是一种自定义的复合数据类型,可由若干不同类型的成员组成,能同一表达某事物的属性。struct 结构名 // 结构名一般首字母大写 {成员类型 成员名;char sex;//我们需要自己定义结构变量、结构数组、分配堆内存才能使用。//struct关键字不能省略 struct 结构名 结构变量名;struct 结构名 结构数组名 [ n ];struct 结构名 * 结构指针变量名 = malloc(sizeof(struct 结构名) * 数量);原创 2023-08-03 23:35:25 · 35 阅读 · 0 评论 -
字符&字符串
6、最常用的是用它给字符数组初始化,char arr[] = “hello” 编译器会自动拷贝字符串到数组的内存中**(包括’\0’)**,完成初始化就有了两份字符串存储在内存中,一份存储在stack、data,另一份还存储在text。当先输入数值型数据(整数形、浮点型),再输入字符型数据时,前一次的输入会残留一个’\n’或空格,影响字符型数据的输入,有以下三种解决方法。**注意:**使用字符串字面值给字符数组赋值,只能在定义字符数组时使用,这是编译器帮忙完成拷贝的,,末尾隐藏着一个’\0’。原创 2023-08-01 23:35:51 · 53 阅读 · 1 评论 -
C语言-指针
类型* 指针变量名;指针变量中只记录了内存中某字节的地址编号,我们把它当作一个内存块的首地址,当使用指针变量访问内存时具体访问多少个字节,由指针变量的类型决定。char * p;// 能访问1字节 short * p;// 能访问2字节 int * p;// 能访问4字节指针定义容易出错的一点// p1是指针变量,p2、p3是普通的int类型变量 int * p1 , * p2 , * p3;// p1、p2、p3都是指针变量 typedef int * intp;原创 2023-07-27 22:57:15 · 39 阅读 · 1 评论 -
修饰变量的关键字
在程序中使用到一个变量时,系统会从内存中读取该变量的值交给CPU运算,如果之后该变量的值没有发生明显变化,再次使用变量时系统会直接使用上次读取的旧值,而不会再从内存中读取。早期的C语言用它来修饰自动分配、释放内存的变量,也就是局部变量和块变量,但由于代码使用的变量绝大多数都是局部变量和块变量,所以就约定,该关键字不加就代表加,所以该关键字已经没有实用价值了。 在C++11的语法标准中,auto有了新的功能,就是定义自动类型的变量,编译器会根据变量的初始值,自动设置变量的数据类型。保护变量不被显式修改。原创 2023-07-25 23:18:27 · 70 阅读 · 0 评论 -
程序的内存分段
C代码被翻译成二进制指令后存储在可执行文件中,当可执行文件被操作系统执行时,它会把里面的二进制指令(编译后的代码)加载到这个内存段,它里面的内容决定了程序如何执行,为了避免程序被破坏、修改,所以它的权限是。 该内存段会随着程序的执行自动的分配(定义局部变量、块变量)、释放(函数执行完毕自动释放局部变量、块变量),虽然使用比较方便,但它的释放不受程序控制,长期使用的数据不能存储在栈内存中。 存储在内存段的变量,被const修饰后,就会改存储到text内存段,变成真正的常量。原创 2023-07-24 23:38:47 · 78 阅读 · 0 评论 -
GNU编译器中特殊的switch语法
这种区间连续性的判断,可以简化代码。x这里是有一个空格的。不然就会 = =、原创 2023-07-20 22:56:06 · 62 阅读 · 0 评论 -
基本数据类型
因为bool类型是在c语言之后出现的,所以在c89以后(c99)以打补丁方式新增了bool型。为了使用方便,在stdint.h 头文件中对它们进行的类型重定义。signed 可以省略,不写就代表有符号。与ASCII表中字符相对应。unsigned不能省略。char,占位符为%s。原创 2023-07-19 23:42:00 · 43 阅读 · 0 评论 -
C语言-gcc
gcc(GNU Compiler Collection),是GNU组织为了编译Linux内核代码而开发一款C语言编译器,现在还支持c++、java等语言。将.c代码进行预处理,主要处理源文件的预处理指令。将若干目标文件、库文件等链接起来生成可执行文件。将上一步的.i文件转换成.s汇编代码。将上一步的.s文件翻译成二进制指令。gcc编译程序的主要过程。原创 2023-07-18 23:39:06 · 101 阅读 · 1 评论