C语言
文章平均质量分 91
C语言的重点内容以及一些OJ题
程序猿(雷霆之王)
鹏
展开
-
C语言中的数组相关知识
上面的代码打印了二维数组中各个元素的地址,这里声明一下,我是在X86的环境下去打印这些地址的,X86环境下的地址相较于X64环境下的地址要短一些,便于我们进行分析。本篇博客为大家介绍数组的知识,这里需要说明,数组的内容很重要,在C语言的学习中占据比较重要的地位,其内容与后面指针的内容也有关联,所以大家务必得掌握数组的相关知识,下面咱们开始正文。通过上图,大家可以看到二维数组的创建方法,二维数组中有行和列的概念,这个大家需要注意,在后面访问二维数组的元素时,对行和列的理解很重要。前面提到过,C语言规定,原创 2024-05-01 10:00:00 · 497 阅读 · 3 评论 -
贪吃蛇游戏
打印好后,我们再设置贪吃蛇的属性。这里我们要注意,食物的坐标是随机生成的,但是也不是完全随机,必须满足上面提到的几个条件,随机数的生成我们需要用到srand函数,这个我们在上面的测试文件中已经写出来了,这个函数是包含在<time.h>这个头文件中的;原创 2024-07-11 08:00:00 · 1915 阅读 · 5 评论 -
C语言刷题小记1
大家仔细观察代码,getchar函数的返回值是int(字符的ASCII值),所以我们需要先创建一个整型变量去接受getchar函数的返回值,下面我们写while循环,注意循环的停止条件,这是一个比较固定的写法,大家可以记住它,在循环体中我们进行判断,这里怎么判断相信大家没有问题,需要强调的是判断完成后,我们要让getchar函数再运行一次,目的是为了处理掉"\n"。大家可以看到,改完后可以实现同样的效果,有了这个函数,我们就不需要去写出具体的判断方法了,直接交给库函数处理,就可以得到我们想要的结果。原创 2024-06-30 19:46:13 · 829 阅读 · 4 评论 -
深入理解指针————Part1
本篇博客将为大家介绍C语言中最关键也是最复杂的的内容,它就是指针,指针的内容是大家普遍存在问题的模块儿,所以希望本篇博客可以位大家解除疑惑,希望大家动动发财的手,一键三连,多多支持。下面进入正文内容。1. 内存和地址1.1 内存在讲内存和地址之前,我们想有个⽣活中的案例: 假设有⼀栋宿舍楼,把你放在楼里,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩,如果想找到你,就得挨个房子去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号,如:原创 2024-05-08 17:44:09 · 1063 阅读 · 3 评论 -
C语言中的循环结构
本篇博客为大家介绍了C语言中的循环结构,其中包括我们最常用的while和for,还为大家介绍了break和continue语句,它们在循环结构中都很常见,所以务必要了解它们的功能以及在不同循环中产生的效果。原创 2024-04-29 09:36:12 · 920 阅读 · 2 评论 -
C语言操作符详解
16进制的数字每⼀位是0~9,a~f的,0~9,a~f的数字,各自写成2进制,最多有4个2进制位就足够了, 比如f的⼆进制是1111,所以在2进制转16进制数的时候,从2进制序列中右边低位开始向左每4个2进制位会换算⼀个16进制位,剩余不够4个⼆进制位的直接换算。8进制的数字每⼀位是0~7的,0~7的数字,各自写成2进制,最多有3个2进制位就足够了,比如7的二进制是111,所以在2进制转8进制数的时候,从2进制序列中右边低位开始向左每3个2进制位会换算一个8进制位,剩余不够3个2进制位的直接换算。原创 2024-05-04 14:16:18 · 1253 阅读 · 4 评论 -
C语言——动态内存管理
所以这里就相当于是传值调用,那么前面我们学过,形参是实参的一份临时拷贝,p有自己的空间,只是接受了str的内容,这时候malloc申请的空间放到p中是和str没关系的,所以当程序走出GetMemory函数后,p指向的那块儿空间就找不到了,所以strcpy里的str就是NULL,那么这个时候想把"hello world"拷贝到空指针所指向的空间中,就会发生对空指针解引用的操作。这里大家注意看代码,在我们使用完空间后,我们需要将申请的空间返还给操作系统,这里就需要用到free函数,这里要强调的是。原创 2024-07-05 21:53:00 · 1220 阅读 · 0 评论 -
深入理解指针————Part3
大家可以发现,通过创建函数指针数组可以简化代码,省去了重复的代码,并且提高了我们代码的可读性,所以大家可以在平时的编程中使用函数指针数组来简化自己的代码。前面我们已经学过了指针数组,我们知道指针数组中存放的是地址,那么函数指针数组,顾名思义,存放的就是函数的地址;原创 2024-05-17 15:31:24 · 1313 阅读 · 2 评论 -
C语言数据类型和变量
下面,为大家介绍一些常见的自定义类型,它们分别是,数组、结构体、联合体和枚举,其中数组和结构体的内容最为关键,在后面数据结构的学习中,结构体的相关内容运用广泛,所以大家在学习这部分的内容时,要注重对其的理解。当然,看到s=2后,想必你也了解到,那个表达式根本就没有执行,s的值依旧说初始化时的值。通过上面的代码,大家可以看到,前置++的用法,注释掉的代码就是它的等价代码,它们表达的含义一样,便于大家理解。在上面的代码中,我们可以看到,先将a的值赋给了b,然后再对a进行自增,所以结果为a==11,b==10。原创 2024-04-25 15:32:19 · 727 阅读 · 2 评论 -
C语言刷题小记2
分析:拿到这道题,大家可能会有一种思路,就是创建一个新数组,然后进行判断,判断结束后将符合条件的元素再插入到新数组,这种想法其实是正确的,但是很可惜,本题不能用这样的方法,因为题目要求不能使用额外的数组空间,这就意味着我们是不能创建新数组的,所以本题就需要采取其他做法;大家来看,这里我分装了一个函数,里面实现的就是冒泡排序的逻辑,在主函数中,我们创建了数组去存储我们输入的成绩,然后将数据交给函数进行排序,最终我们需要返回的就是最大值;反之,我们将最后一位去除掉,将其后一位作为最后一位,再次进行判断。原创 2024-07-24 23:02:27 · 815 阅读 · 4 评论 -
C语言——自定义类型:结构体
综上,可能有的同学就认为这个结构体的大小是9字节了,那么这里大家要注意第三条规则,结构体的总大小为最大对齐数的整数倍,那么在这个结构体中,第一个成员的对齐数为1,第二个成员的对齐数为4,第三个成员的对齐数为1,那么最大对齐数就为4了,所以整个结构体的大小就必须为4的整数倍,那么我们看图,占内存最小的就是12,那么这个结构体的大小就为12字节;大小为4字节,而VS默认值为8,所以结果就是4,也就是说第二个成员要对齐到4的整数倍的地址处,那么最近的就是从偏移量为4的地方开始存储,向后存4个字节;原创 2024-06-13 14:32:32 · 1200 阅读 · 4 评论 -
关于指针和数组的一些经典笔试题解析
所以这个数组的内容就是{1,3,5},这一点大家一定要清楚,再往下就比较简单了,创建了一个整型指针来接受数组第一行的地址,那么p[0]其实就是*(p+0),就是*p,那么*p在这里就是a[0][0],就是元素1,所以打印的结果是1;第四行代码,这里大家发现它和第二行比较相似,这里给出的是a+1,那这里a本来是首元素的地址,让指针+1,相当于向后移动一位,那么就指向了第二个元素,但是大家注意,这里并没有进行解引用操作,也就意味着这里还是一个地址,那么在X86的环境下,结果就是4个字节;原创 2024-05-27 23:30:38 · 684 阅读 · 8 评论 -
C语言中的分支结构
大家可以看到,这个程序最终什么都没有打印。(先使用,后+1),所以先将a的值使用,那么整个表达式中就出现了0,在&&运算中,只要出现一个0,那么根据其真值表的特点,整个式子就为假,那么后面的表达式就不再进行计算,所以大家可以看见结果,b,c,d的值都没有发生变化。大家可以看到,改成||后结果发生了变化,a==0进去,在||运算中出现0,整个式子的结果还不能确定,所以继续进行后面的计算,当走到第二项时b先+1,再使用,所以第二项不为0,这样的话整个式子的值就已经确定了,后面的式子就不再计算,所以d的值不变。原创 2024-04-28 07:00:00 · 994 阅读 · 5 评论 -
深入理解指针————Part2
所以在上面的代码中,我们给test函数传递的是数组首元素的地址,那这个时候sizeof(arr)求的就是首元素地址的大小,也就是4个字节(X86环境),sizeof(arr[0])是首元素,它是整型元素,大小是4个字节。大家先来看下面的代码。原创 2024-05-14 09:00:00 · 1167 阅读 · 6 评论