
C语言笔记
文章平均质量分 97
知识点讲解~
Keven-zhou
但行好事,莫问前程
展开
-
C语言-详解内存函数
好,讲了这么多,让我们来回顾今天讲了什么吧~函数memcpy主要功能是从起始位置src复制nums个字节的数据到dest指向的内存位置。但是这个函数遇到'\0'的时候,并不会停下来的。如图:这里我们是把arr2数组中的10字节的元素用memcpy函数拷到arr数组中,那从这个运行结果,我们可以看出这个arr数组已经是越界访问了。因此使用这个memcpy函数要小心一点才行。如果起始地址src和目标地址dest有任何的重叠,复制的结果都是未定义的。memmove函数和memcpy。原创 2024-04-13 23:55:18 · 2235 阅读 · 79 评论 -
C语言——详解字符函数和字符串函数(二)
strcmp具体的函数介绍如下图所示:如果第一个字符串PTR1大于PTR2的值,返回的是一个大于0的数。如果第一个字符串PTR1等于PTR2的值,返回的是一个等于0的数。如果第一个字符串PTR1小于PTR2的值,返回的是一个小于0的数。strncpy相信同学们看了这个官网对strncpy函数的介绍,自己是能够理解的。那接下来博主教一下你如何使用strncpy这个函数对字符进行拷贝把~strncat相信同学们看了这个函数官网介绍以及那个例子,自己是应该能够看懂这个函数的用法~原创 2024-04-07 12:08:39 · 1369 阅读 · 64 评论 -
C语言——详解字符函数和字符串函数(一)
众所周知,C语言中提供了一系列的字符函数,这些字符函数专门做字符分类的。这些函数就是判断这个字符是属于什么类型的字符的。这些字符函数都需要包含头文件。islower如下两图所示:从这两幅图,我们可以看出islower是判断它的函数参数部分的c是否为小写字母的。我们可以通过返回值来说明是否是小写字母,如果是小写字母就返回非0的整数,如果不是小写字母,则返回0。strcat函数是C语言中的一个字符串拼接函数,它的功能是在一个字符串后面追加上另外一个字符串。原创 2024-03-14 21:43:25 · 2429 阅读 · 74 评论 -
C语言-数组&&指针笔试题讲解(1)-干货满满!!!
sizeof只关注内存存放空间的大小,不在乎内存中存放的数据。原创 2023-12-19 02:21:50 · 2000 阅读 · 59 评论 -
C语言-指针讲解(4)
根据上图的介绍,我们不难看出qsort第一个参数的意思是base指向待排序的第一个元素。但是为什么它前面的类型是void*呢?很多同学可能对此不理解。下面我来重点介绍一下为什么是前面的类型是void *?比方说:我这里要定义了一个a的变量,而如果说我用char* 的指针变量来接收a的地址,显然是不合理的,因为vs弹出警告说:int * 到 char * 的类型不兼容。反倒void* 是一个通用的指针类型。它可以接受任意数据类型的地址。因此前面的指针类型我们是可以写成void*的。原创 2023-12-01 09:43:41 · 1452 阅读 · 43 评论 -
C语言-指针讲解(3)
数组指针,顾名思义它就是一种指针,里面存放的是数组的地址。函数指针变量是用来存放函数地址,未来通过地址来调用函数的。那么函数是否有地址呢?输出结果如下:我们可以看到vs编译器确实打印出来了地址。函数是有地址的。函数名就是函数的地址可以通过&函数名的方式获得函数的地址。但如果我们要把函数的地址存放起来,那应该怎么做呢?我们应该创建函数指针变量来存放函数的地址。其实函数指针变量的写法其实和数组指针非常类似。return x+y;原创 2023-11-25 01:18:40 · 2707 阅读 · 42 评论 -
C语言-指针讲解(2)
野指针,顾名思义,就是指针指向的位置是不可知的。就好比如没有主人的流浪狗一样。assert.h头文件定义了assert(),它是用于在运行时确保程序符合指定条件,如果不符合,就报错终止运行,这个宏尝尝被称为“断言”。传址调用,顾名思义就是将main函数中的变量地址传到所调用的函数中,然后在被调函数中,通过地址间的操作即可实现两个数的交换。二级指针指向的是一级指针的指针,也就是说一个指针指向的是另外的指针,同时二级指针也是存放一级指针的地址,则称之为二级指针。俗话说,存放整型的数组是整形数组。原创 2023-11-01 10:49:19 · 1478 阅读 · 31 评论 -
C语言指针详解(一)超详细~
在讲内存和地址之前,我们想有个生活中的案例:假设有一栋宿舍楼,把你放在楼里,楼上有100个房间,但是房间没有编号,你的一个朋友来找你玩,如果想找到你,就得挨个房子去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号,如:有了房间号,如果你的朋友得到房间号,就可以快速的找房间,找到你。生活中,每个房间有了房间号,就能提高效率,能快速的找到房间。如果把上面的例子对照到计算中,又是怎么样呢?其实也是把内存划分为一个个的内存单元,每个内存单元的大小取1个字节。计算机中常见的单位(补充):一原创 2023-10-05 20:17:02 · 326 阅读 · 19 评论 -
C语言的操作符讲解(下)~
即使有了操作符的优先级和结核性,我们写出的表达式依然会有可能不能通过操作符的属性确定唯一的计算路径,那这个表达式就是存在风险的,因此大家建议不要写出特别复杂的表达式。好啦!今天的分享就到次结束了,如果觉得博主讲得不错的话,欢迎大家一键三连支持一下!!!原创 2023-09-05 23:35:02 · 791 阅读 · 16 评论 -
C语言的操作符详解(上)超详细~
在生活中,我们经常能听到2进制,8进制,16进制的这样的讲法,那它们分别是什么意思呢?其实2进制,8进制,16进制只是数值的不同表现形式而已。我们重点介绍一下二进制:10进制中满10进110进制的数字每一位都是0~9的数字组成其实二进制也是一样的2进制中满2进12进制的数字每一位都是0~1的数字组成那么1101就是二进制的数字了。原创 2023-08-31 21:52:35 · 745 阅读 · 13 评论 -
C语言函数递归讲解~
由图我们得知,当用户输入1234时,进入Print函数内部,会层层递推下去,直到递推到Print(1),1<=9,则打印出1出来,接着用层层回归上去,直到把1234的每一位都打印出来,递归就结束,然后就会返回到main函数内部,继续执行接下来的语句。但是当我们n输入为50的时候,需要花很长时间才能算出结果,这个计算所花费的时间,是我们很难接受的,这也说明递归的写法是非常低效的,这是为什么呢?原创 2023-08-21 21:42:13 · 1107 阅读 · 13 评论 -
C语言if语句详解
上面的代码排版,让else和第一个if语句对齐,让我们误以为else是跟第一个if匹配的,当if语句不成立的时候,自然想到的是执行else语句,打印haha但实际上else是跟第二个if进行匹配的,这样后面的if…else语句都是嵌套在第一个if语句上面,如果第一个if语句不执行,那么嵌套的if和else语句也执行不了,这样就啥都不打印了。ok~以上就是嵌套if语句的语法,有了嵌套语句,我们就可以完成更多复杂逻辑的判断。,也就是表达式的结果如果是0,则语句不执行,表达式的结果如果不是0,则语句执行。原创 2023-07-29 11:55:30 · 11035 阅读 · 2 评论