自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 C语言之文件操作

牢记:在文件的读取过程中,不能用feof函数的返回值直接用来判断文件的是否结束。而是用于当文件读取结束的时候,判断是读取失败结束,还是遇到文件尾结束。fread函数在读取的时候,返回的是实际取到的完整元素的个数,如果发现读取到的完整的元素个数小于指定的元素个数,这就是最后一次读取了。fgetc函数在读取结束的时候,会返回EOF,正常读取的时候,返回的是读取到的字符的ASCLL码值。fgets函数在读取结束的时候,会返回BULL,正常读取时,返回存放字符串的空间起始位置。4、文件读取结束的判定。

2023-04-12 09:27:45 66

原创 C语言之内存空间分配

动态内存分配函数有:malloc,calloc,free,realloc等函数,这些函数都是在堆区使用的,换句话说,我们静态开辟的内存空间是在栈区,动态开辟的内存空间是在堆区。如果在第一次释放完没有及时手动把p设置为NULL,那么第二次释放是不允许的,释放的空间不能再次释放,所以我们要养成良好的代码习惯。包含柔性数组成员的结构用malloc函数进行内存的动态分配,并且分配的内存应该大于结构的大小以适应柔性数组的语气大小。free是释放堆区动态开辟的内存空间,而非动态开辟的内存空间在栈区。

2023-04-07 13:26:38 737

原创 C语言之枚举和联合体

我们定义一个联合体,我们发现联合体和里面的成员c和i存放的地址相同,同时联合体的大小为4,这和我们前面的结构体出入很大,那么我们来分析分析联合体的储存规则。联合体定义的变量包含一系列的成员,特征是这些成员公用同一块空间(所以联合体也称为共用体)。enum为枚举的关键字,Color为名称,{}里为枚举常量(是可以修改值的)。当最大成员大小不是最大对齐数的整数倍时,就要对齐到最大对齐数的整数倍。2、和#define定义的标识符相比枚举有类型检查,更加的严谨。一周的星期一到星期日是有限的7天,可以一一列举。

2023-03-31 18:07:58 67

原创 C语言之结构体

struct的作用是声明结构体,Book结构体的名称,{}里面装的是结构体的成员变量。2、从第二个成员往后的所有成员,都放在一个对齐数(成员的大小和默认对齐数的较小值,VS默认为8)的整数的整数倍的地址处。4、结构体嵌套:如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是。上述这样写是不对的,应为编译器会把上面的两个声明当成完全不同的两个类型,所以是非法的。3、结构体的总大小是结构体的所有成员的对齐数中最大的那个对齐数的整数倍。此时Node1为我们要改的结构体名。

2023-03-30 23:10:31 59

原创 C语言库函数拓展

memcpy中有三个参数,第一个参数为目标参数,第二个参数为待拷贝参数,第三个参数拷贝多少个字节,切记我们的memcpy函数是以字节为单位拷贝。应为我们拷贝的类容有各种各样的类型,不仅有整数型,同时也有字符型,为了防止代码的冗余。此函数返回的值和strcmp返回的规律一样,如果相等返回0,如果arr1小于arr2则返回小于0的值,如果arr1大于arr2则返回大于0的值。我们采用从前往后的拷贝的方法,一个字节一个字节的去拷贝,共拷贝num次。四、memmove 内存拷贝(可以拷贝重复的数字)

2023-03-29 13:37:30 200

原创 C语言库函数-从入门到精通

在c语言的学习中,我们对函数应该非常的熟悉,库函数对我们的代码的编写起到了巨大的作用,今天我们来看看学习过程中重要的库函数吧。引用的头文件有:<stdio.h> <string.h> <assert.h> <errno.h>一、strlen求字符串的长度基本语法:所以我们知道了,strlen是以\0结尾,但是计算字符串的长度时,不包含\0。模拟实现strlen求字符串的长度:我们可以用多种方法:1、计数器(最简单,最基本

2023-03-28 14:23:55 151

原创 C语言之指针

上述代码中,arr表示首元素得地址,首元素地址加一得到第二个元素的地址,故地址多了四个字节。但是&arr是p2数组指针指向的整个数组得地址,故&arr加一表示跳过整个数组。因为1,2为创建数组,创建数组我们要在内存独自开辟一个空间,str1 和 str2储存空间不同,所以存储地址不同,所以不同。如上述代码,如果是int类型的指针,加一以后地址是加了4个字节;指针 - 指针得到的就是两个指针之间的元素个数(两个指针得指向同一块空间)此时,数组的下标是0-9,而for循环中出现了10,造成指针越界。

2023-03-27 13:08:27 988

原创 C语言之数据的储存

当然,如果是有符号类型,我们在前面补1,如果是无符号类型,我们在前面补0。首先,根据数据的数值直接写出的二进制序列就是原码,其次,原码的符号位不变,其他的位按位取反得到反码,最后,反码加一得到补码。这里我们规定用%u来打印a,但是我们原来的a是有符号类型的,所以我们补就按照有符号类型的来补,所以补1。大端字节序:把数据的低位字节序的内容储存在高地址出,高位字节序的内容存放在低地址处。小端字节序:把数据的地位字节序的内容存放在低地址处,高位字节序的内容存放在高地址处。而对正整数来说,原码,反码,补码相同。

2023-03-26 19:23:25 270

原创 C语言之数组

C语言之数组

2023-03-25 23:14:48 72 1

原创 C语言之操作符

C语言之操作符

2023-03-24 23:21:16 70

原创 C语言变量与常量

变量与常量,变量可分全局变量和局部变量,常量也有四种方式的常量

2023-03-24 11:37:16 45

原创 C语言中的常见数据类型有哪些?

一般初学C语言常见的数据类型如下

2023-03-24 10:37:50 105

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除