![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 83
南橘Q
这个作者很懒,什么都没留下…
展开
-
(C语言进阶)指针进阶(下)
(C语言进阶)指针进阶(下)原创 2023-05-11 00:28:11 · 153 阅读 · 0 评论 -
(C语言进阶)柔性数组
柔性数组介绍原创 2023-09-28 10:35:05 · 63 阅读 · 0 评论 -
(C语言进阶)动态内存管理
动态内存管理内容原创 2023-09-12 11:06:13 · 46 阅读 · 0 评论 -
(C语言进阶)联合(共用体)
联合也是一种特殊的自定义类型,这种类型定义的变量也包含一系列的成员,特征是这些成员公用同一块空间(所以联合也叫共用体)。联合成员真的共用一块空间吗?我们上机实验一下!int i;return 0;输出结果:分析:在内存中,i为int类型占4个字节,c为char类型占1个字节,联合体大小经过计算是4个字节,i和c的地址相同,那么i和c共用1个字节的空间。原创 2023-07-31 19:03:38 · 61 阅读 · 0 评论 -
(C语言练习)静态/动态版本通讯录
2.当通讯录退出后,重新运行,之前的信息都丢了,当前通讯录中的信息都丢了。当前通讯录中的信息都是保存在内存中的,程序退出,内存就回收,下一次重新运行程序,内存重新分配,之前的数据就都不见了。1.通讯录的大小是固定大小100个元素。那么如果我要150个元素?如何将数据能够永久的保存?原创 2023-07-31 17:44:53 · 54 阅读 · 0 评论 -
(C语言进阶)枚举
枚举顾名思义就是一一列举。把可能的取值一一列举, 比如我们现实生活中:一周的天数、性别、一年的月份等等将其可能出现情况列举出来。原创 2023-07-28 16:14:10 · 54 阅读 · 0 评论 -
(C语言进阶)位段
位段的声明和结构是类似的,有两个不同:1.位段的成员必须是 int、unsigned int 或signed int。2.位段的成员名后边有一个冒号和一个数字。int _b:5;int _c:10;int _d:30;位段到底是如何分配空间的呢?位段到底占多大空间呢?int _b : 5;原创 2023-07-28 15:32:24 · 42 阅读 · 0 评论 -
(C语言进阶)结构体
/结构体变量的定义struct Sint x;int y;}s1;//声明类型的同时定义变量s1,全局变量s1//全局变量s2int main()//局部变量s3return 0;结构体变量定义以上三种形式,需要注意的是第二种需要先定义之后才能再像该形式进行定义。原创 2023-09-15 08:35:21 · 66 阅读 · 0 评论 -
(C语言进阶)内存操作函数 memcpy memmove memset memcmp和字符函数
下面是将要介绍的几个函数:例题1 调试分析:如果source和destination有任何的重叠,复制的结果都是未定义的。输出结果:原因是:所以我们发现,在内存重叠重叠的时候,使用memcpy可能出现意想不到的效果,因此出现内存重叠的时候,我们要使用memmove调试结果:关于涉及到的类型voidvoid*是通用类型的指针,可以接受任意类型的地址。但是这类指针不能直接进行解引用和+-运算memcpy 函数的设计者不知道未来程序员使用memcpy拷贝什么类型的数据,因此使用void* 来设计原创 2023-07-27 16:26:09 · 225 阅读 · 0 评论 -
(C语言进阶)strerror
下面是将要介绍的几个函数: 输出结果:但是,为什么strerror函数里面为1,2,3时,会输出不同的错误信息呢?因为C语言的库函数在调用失败的时候,会将一个错误码存放在一个叫 errno 的变量中,当我们想知道在调用库函数是发生了什么错误信息,就可以将 errno 中的错误码翻译成错误信息。现在用打开读取文件的场景,使用strerror 这里我们没有放“test.txt” ,所以会打印失败输出结果:还可以使用perror,是将自己的出入信息printf和错误信息(strerror)一并输出(p原创 2023-07-27 16:25:56 · 54 阅读 · 0 评论 -
(C语言进阶)strtok
下面是将要介绍的几个函数:Returns a pointer to the first occurrence of str2 in str1, or a null pointer if str2 is not part ofstr1 输出结果: 输出结果: (本节完)原创 2023-07-27 16:25:27 · 57 阅读 · 0 评论 -
(C语言进阶)strstr
下面是将要介绍的几个函数: 返回值简单来说:在str1中找str2出现的位置,返回str2的字符串在str1字符串第一次出现的位置。如果找不到返回空指针。输出结果:或者 用法:与strstr 函数比较类似的函数,用来找出一个字符在一个字符串中第一次出现的位置 例1输出结果: 或者 用法:用来找出一个字符在一个字符串最后出现的位置例题1输出结果: 输出结果: 解释:在对该代码进行解释之前,我们先用其他例子来进行说明,便于代码的理解。a与b不匹配,指向arr1开头的指针需要移动到下一原创 2023-07-17 19:46:30 · 725 阅读 · 0 评论 -
(C语言进阶)strncpy strncat strncmp
下面是将要介绍的几个函数:前面我们学习了长度不受限制的字符串函数( strcpy strcat strcmp)。而这些字符串函数即使是缓冲区溢出,程序发生报错也会对内容进行拷贝和修改,同时使用strcpy strcat strcmp程序提示这些函数不安全。为了让程序更加安全和避免错误,我们本节开始介绍strncpy strncat strncmp这三个字符串函数,与上面长度受限制的字符串函数的区别如同函数名一般加了n,为的是限制操作字符个数。 例题1输出结果为:调试:例题2输出结果为:调试原创 2023-07-17 13:03:12 · 146 阅读 · 0 评论 -
(C语言进阶)strcmp
下面是将要介绍的几个函数: 返回值: 比较规则:这里用判断的==是两个字符串的首个字符的地址是否相等,而不是比较字符串长度。同时注意,比较两个字符串内容的时候,不能使用==,应该使用strcmp。输出结果为:解释:从头开始a的ASCII值小于b的ASCII的值,因此arr1的内容小于arr2的内容,故输出的值小于0输出结果:解释: 从头开始两个数组的内容一直相等,直到第六位时开始不同,g的ASCII值大于f的ASCII的值,因此arr1的内容大于arr2的内容,故输出的值大于0输出结原创 2023-07-17 11:42:05 · 68 阅读 · 1 评论 -
(C语言进阶)strcat
下面是将要介绍的几个函数: 例题1 输出结果:原理:函数是从第一个数组arr1‘\0’之后开始追加arr2,为了方便理解对代码进行修改,并且进行调试得到如下: 例题2注意:两个数组的内容必须都需要包含‘\0’,否则不知道追加到哪里才能结束。(会越界访问)输出结果: 例3 输出结果: 原因: 注意:这里改变的src(*src++)可以让src内容发生改变,但是不可以通过src改变指向的内容。因此不建议自我追加用strcat。(本节完)原创 2023-07-17 10:36:23 · 105 阅读 · 1 评论 -
(C语言进阶)strcpy
下面是将要介绍的几个函数: 结果如下 : 输出结果为:拷贝原理: 那么,如果拷贝内容没有包含'\0'呢?那就是下面这种情况 输出结果:拷贝原理:解释:strcpy拷贝到'\0'就停止,但是没有'\0'只能继续拷贝直到找到'\0'。否则输出结果不为正确的拷贝结果。因此要遵守源字符串必须以 '\0' 结束。输出结果:(输出有误且有报错结果) 因此,我们在拷贝的时候需要做到目标空间必须足够大,以确保能存放源字符串输出结果:调试: 用指针指向的字符串来举例,指针指向的内容是不可以改原创 2023-07-15 17:51:18 · 102 阅读 · 1 评论 -
(C语言进阶)strlen
下面是将要介绍的几个函数:求字符串长度 strlen(本节)原创 2023-07-15 16:21:31 · 91 阅读 · 1 评论