- 博客(18)
- 收藏
- 关注
原创 C语言文件操作
磁盘(硬盘)上的⽂件是⽂件。但是在程序设计中,我们⼀般谈的⽂件有两种:程序⽂件、数据⽂件(从⽂件功能的⻆度来分类的)。2.1程序文件程序⽂件包括源程序⽂件(后缀为.c),⽬标⽂件(windows环境后缀为.obj),可执⾏程序(windows环境后缀为.exe)。2.2数据文件⽂件的内容不⼀定是程序,⽽是程序运⾏时读写的数据,⽐如程序运⾏需要从中读取数据的⽂件,或者输出内容的⽂件。本章讨论的是数据⽂件。
2025-09-19 22:22:04
717
2
原创 动态内存管理
• 返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使⽤的时候使⽤者⾃。• 函数的功能是为 num 个⼤⼩为 size 的元素开辟⼀块空间,并且把空间的每个字节初始化为0。• 包含柔性数组成员的结构⽤malloc ()函数进⾏内存的动态分配,并且分配的内存应该⼤于结构的⼤。当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适⼤⼩。• 有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的使。
2025-09-18 19:46:38
851
原创 自定义类型:联合和枚举
在C语⾔中是可以的,但是在C++是不⾏的,C++的类型检查⽐。联合的成员是共⽤同⼀块内存空间的,这样⼀个联合变量的⼤⼩,⾄少是最⼤成员的⼤⼩(因为联合。代码1输出的三个地址⼀模⼀样,代码2的输出,我们发现将i的第4个字节的内容修改为55了。这些可能取值都是有值的,默认从0开始,依次递增1,当然在声明枚举类型的时候也可以赋初值。• 当最⼤成员⼤⼩不是最⼤对⻬数的整数倍的时候,就要对⻬到最⼤对⻬数的整数倍。像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。把可能的取值⼀⼀列举。
2025-09-16 18:23:37
242
原创 C语言之结构体
1.1结构的声明假如描述一个学生1.2结构体变量的创建和初始打印结果:名字:zhangsan 年龄:20名字:lisi 年龄:181.3结构体的特殊声明在声明结构的时候,可以不完全的声明。⽐如:输出结果: 100 A缺点:1.4结构体的自引用在结构中包含⼀个类型为该结构本⾝的成员是否可以呢?⽐如,定义⼀个链表的节点:在结构体⾃引⽤使⽤的过程中,我们可以使用 typedef 对匿名结构体类型重命名来化简2.结构体的内存对齐我们要如何计算结构体的所开辟的内存大小,这就涉及到结构体
2025-09-16 17:03:42
1106
原创 数据在内存中的存储
⾸先,E为⼀个⽆符号整数(unsigned int)这意味着,如果E为8位,它的取值范围为0到255,如果E为11位,它的取值范围为0~2047。但是,我们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上。这时,浮点数就采⽤下⾯的规则表⽰,即指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第⼀位的1。⽐如:0.5 的⼆进制形式为0.1,由于规定正数部分必须为1,即将⼩数点右移1位,则为1.0*2^(-1),其。⼩端模式,刚好相反。
2025-09-12 15:42:35
563
原创 C语言内存函数
该函数将source中的num个字节的数据拷贝到destination内存中,即使遇到’\0’也不会停止拷贝,会将剩下的全部拷贝’\0’,如果有目标空间与原空间有任何重叠部分,我们最好不用这个函数,用下一个 内存函数memmove。这里将arr数组中的内容归零了,如果想改为1,那这个方法不可行,因为memset是一个字节进行修改的,而整型数据的存储是以16进制来存储的。我们发现,代码运行后arr中的数据变为了3,4,5,6,7,‘\0’。• ⽐较从ptr1和ptr2指针指向的位置开始,向后的num个字节。
2025-09-11 10:03:55
316
原创 C语言中的字符函数和字符串函数
比较两个字符的前num个字符,如果相等就继续比较,最多比较num此,如果提前发现对应字符不一样,那就提前结束,如果一直相等下去,那就返回0;·找到目标空间中的第一个’\0’,并从这个位置开始追加源头字符串,源头字符串的所有内容包括’\0’都将追加到目标空间中。2.isspace:空格’ ‘,换行’\n’,换页’\f’、制表符’\t’、垂直制表符’\v’、回车’\r’strtok函数将找到str中的下一个分隔符,并将其用’\0’代替分隔符,返回一个指向这个分隔符的指针;'\0’也会被拷贝到目标空间去。
2025-09-10 15:48:28
1012
原创 深入理解指针(3)
所以,根据数组名是数组首元素地址这个规则,二维数组名表示的就是第一行的地址,是一维数组的地址。根据上面例子,第一行的一维数组的类型就是int[5],所以第一行的地址的类型就是数组指针类型int(*)[5].那就意味着二维数组传参本质上也是传递了地址,传递的是第一行这个一维数组的地址,那么形参也是可以写成指针形式的。首先我们再次理解一下二维数组,其实它可以看作是每个元素是一维数组的数组,也就是二维数组的每个元素是一个一维数组。结合,说明p是一个指针变量,然后指向的是一个大小为10个整型的数组。
2024-11-05 21:57:27
1086
2
原创 第一次写关于C语言的博客
为了不再重复实现常⻅的代码,让程序员提升开发效率,C语⾔标准规定了⼀组函数,这些函数由不同的编译器⼚商根据标准进⾏实现,提供给程序员使⽤。上面的代码使用printf函数打印字符串。1.C语言的基本认知:C语言是一门编译型的计算机语言,其源代码本身都是文本文件,文本文件本身是无法执行的,必须通过编译器和链接器的链接,生成二进制的可执行文件才能被计算机识别并执行。可以看到arr1数组在打印的时候,打印了a,b,c后还打印了一些随机值,这是因为arr1在末尾的地方没有\0字符作为结束标志,再打印的时候没有停止。
2024-10-19 22:43:24
653
7
原创 我的第一篇博客(C语言入门)
在最初连一个最简单的hello world都不会的纯小白选手已经进阶成为会写一些简单的输入输出这种简单的顺序机构进而变为含if、else的分支结构继而学会啦一些循环结构以及数组函数等等;一路走来我发现啦自己有一些经常犯的小错误比如在写输入时每次调用函数时都会忘记写&这个符号,再比如我还会经常忘记定义自己所调用的变量(这个我现在也不知道怎么去改。在vs中打开源文件新建一个项目时应写成test.c,这个文件在经过编译器后变为test.obj在经过链接器后变成.exe即为可执行成序。
2023-11-19 19:15:19
80
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅