
C语言周刊
文章平均质量分 82
far away4002
The road may be long, but it will lead to the destination; the task may be difficult, but it will surely be accomplished.
展开
-
文件初阶入门(葵花宝典)
上面的适用于所有输入流一般指适用于标准输入流和其他输入流(如文件输入流);所有输出流一般指适用于标准输出流和其他输出流(如文件输出流)。ANSIC 标准采⽤“缓冲⽂件系统” 处理的数据⽂件的,所谓缓冲⽂件系统是指系统⾃动地在内存中为。因为有缓冲区的存在,C语⾔在操作⽂件的时候,需要做刷新缓冲区或者在⽂件操作结束的时候关闭⽂件。feof的作用是:当文件读取结束的时候,判断读取结束原因是否是:遇到文件末尾结束。在文件读取过程中,不能使用feof函数的返回值直接判断文件是否结束。原创 2024-06-14 23:17:02 · 615 阅读 · 7 评论 -
编译和连接
1. 翻译环境和运行环境1. 翻译环境和运行环境在ANSI C 的任何一种实现中,存在两个不同环境。1) 翻译环境,在这种环境中源代码被转换为可执行的机器指令(二进制指令)。2) 执行环境,它用于实际执行的代码。2. 翻译环境翻译环境是怎么将源代码转换为可执行的机器指令?翻译环境大概所做的事情:编译和链接两个过程组成,而编译又可分为预处理(预编译)、编译、汇编三个过程。一个C语言的项目中可能有多个 .c 文件一起构建,那多个 .c 文件如何生成可执行程序?(1)原创 2024-06-12 23:12:23 · 1058 阅读 · 26 评论 -
自定义类型:联合体和枚举
>当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍。像结构体一样,联合体也是由一个或多个成员构成,这些成员可以是不同类型。5. 枚举变量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用。联合的成员是共用同一块内存空间,联合体的大小至少是最大成员的大小。2. 和#define定义的标识符比较枚举有类型检查,更加严谨。这些枚举的值默认从0开始,依次递增1,也可以对枚举类型赋初值。给成员其中一个赋值,其他成员的值也跟着变化。-> 联合体的大小至少是最大成员的大小。原创 2024-06-04 13:29:36 · 917 阅读 · 50 评论 -
数据在内存中的存储
因为在计算机系统中,我们以字节为单位,每个地址单元都对应着一个字节,一个字节为8 bit 位,但是除了8 bit的 char 之外,还有16 bit 的 short 型,32 bit的 long型(取决于编译器),由于寄存器的宽度大于一个字节,那么必然存在一个如何将多个字节安排的问题。IEEE 754规定,计算机保存M时,默认这个数的第一位总是1,因此可以舍去,只保存小数点后面的部分,比如保存1.01的时候,只保存01,等到读取的时候,再把1加上去,这样做的目的是,节省一位有效数字空间,使精确度更高。原创 2024-06-01 15:41:13 · 2324 阅读 · 18 评论 -
深入理解指针<三>
本质是将字符串hello wzy首字符的地址放到str中,且字符串hello wzy为常量字符串,不可以通过解引用操作改变字符的值。解释:p和*结合,说明p是一个指针变量,然后指向的是一个大小为10个整形的数组。通过程序测试,可以看到函数也有地址,函数名就是函数的地址,也可以通过%函数名获得函数的地址。p先与[10]结合,说明p是数组,类型是int(*)(int)的指针。函数指针变量用来存放函数的地址,可以通过函数的地址来调用函数。二维数组的首元素是第一行的地址,是一个一维数组。数组指针的用途:转移表。原创 2024-05-19 13:54:20 · 502 阅读 · 11 评论 -
C语言内存函数和字符串函数(入门必看)
C语言程序启动时都会使用一个全局变量errno来记录程序的错误码,程序启动时errno为0,表示没有错误,当我们在使用标准库函数发生某种错误,将会转化为对应的错误码,错误码难理解,所以没一个错误码都有对应的信息,strerror函数可以将对应的错误信息字符串的地址返回。.函数memcpy从source的位置开始从后复制num个字节的数据到destination的指定位置上。---------->num为字节的个数,不是元素的个数。memset用来设置内存的,将内存中的值以字节为单位设置想要设置成的内容。原创 2024-05-18 21:19:42 · 547 阅读 · 4 评论 -
深入理解指针《2》
sizeof(数组名),sizeof中单独放数组名,这里的数组名表示整个数组,计算的是整个数组的大小,单位是字节。&数组名,这里的数组名表示整个数组的大小,,取出的是整个数组的地址(除此之外,其他的全是数组首元素的大小)。&arr[0]就是数组第一个元素的地址,而且是数组首元素的地址。既然说数组名是首元素的地址,那接下来的代码对此疑惑?数组名是首元素的地址,应该为4/8才对。2. 整形数组 是存放整形的数组。所以 指针数组是存放指针(地址)的数组。数组传参传递的是数组首元素的地址。将一组数据排序成降序。原创 2024-05-14 16:38:09 · 359 阅读 · 5 评论 -
深入理解指针(1)
assert.h头文件定义了宏assert(),用于在运行是确保程序符合指定条件,如果不符合,就报错,程序终止运行,这个宏成为“断言”。int* 表示p是一个指针类型,p指向a,p存放的是变量a的地址。指针是C语言的核心部分,学习指针可以使内功更扎实,代码更高效和创新点更多。执行完 int n=0x11223344语句玩后n的地址。&(取地址操作符) 简而言之:取出的是变量的地址。*p(对p所指的地址进行解引用)即a=*p。执行完 *p=0语句玩后n的地址。执行完 *p=0语句玩后n的地址。原创 2024-05-11 18:59:35 · 394 阅读 · 6 评论 -
【C语言篇】从字符海洋到整数大陆——atoi 的探险之旅
1.1 前言:从字符串到整数的必修课在编程世界中,数据的存储和展示往往以字符串形式存在,例如从用户输入、文件读取或网络传输中获取的数据。为了对这些数据进行数值计算,我们需要一种可靠的方法将字符串转换为整数。这正是atoi(ASCII to Integer)函数的用武之地。作为 C 语言中一项经典的字符串转换工具,atoi提供了简洁的接口,使开发者能够轻松将字符串表示的数字转换为整数。在许多简单的转换场景中,它就像一把“钥匙”,帮助我们快速打开字符串到整数转换的大门。然而,随着程序复杂度的增加,atoi。原创 2024-11-23 21:16:29 · 828 阅读 · 2 评论 -
文件的基础必备知识(初学者入门)
1.为什么使用文件我们写的程序数据是存储在电脑内存中,如果程序退出,内存回收,数据就丢失,等程序再次运行时,上次的数据已经消失。面对这个问题即我们想将数据永久保存,我们就可以使用文件。2. 什么是文件磁盘(硬盘)上的数据的集合就是文件。在文件功能的角度看,文件一般分为两种:程序文件、数据文件。2.1 程序文件程序文件包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe).2.2 数据文件。原创 2024-06-10 22:15:19 · 2477 阅读 · 16 评论 -
动态内存管理
包含柔性数组成员的结构用malloc()函数进行内存的动态分配,并且分配的内存应该大于结构体的大小,以适应柔性数组的预期大小。如果开辟失败,则返回 NULL 指针,因此malloc的返回值一定要做检查,防止的空指针的解引用操作。函数的功能是开辟 num 个大小为 size 字节的元素开辟空间,并且把空间的每个字节大小初始化为0。1 -> 如果 ptr 指向的空间不是动态开辟的,那free函数的行为是未定义的。申请的空间太小,有时又觉得空间太大,为了合理的利用内存,我们需对空间做灵活的调整。原创 2024-06-08 22:25:10 · 1830 阅读 · 12 评论 -
自定义类型:结构体
1. 结构体类型的声明2. 结构体变量的创建和初始化3. 结构体成员访问操作符4. 结构体传参5. 结构体实现位段。原创 2024-06-02 23:31:51 · 956 阅读 · 14 评论