- 博客(14)
- 收藏
- 关注
原创 c语言--动态内存管理
这个函数向内存申请一块连续可用的空间,并返回指向这块空间的指针。1.如果开辟成功,则返回一个指向开辟好空间的指针。2.如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。3.返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。4.如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。
2023-03-07 19:36:39 125 1
原创 【C语言】动态版本通讯录
存储1000个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址。2.添加联系人的函数实现,用realloc增加增容。1.初始化,开辟一块空间,使用malloc函数。其中每一个功能可以封装成一个函数,方便管理。实现一个动态通讯录;以名字排序所有联系人。3.展示联系人的函数。
2023-01-16 13:22:48 193
原创 【C语言】指针进阶
arr代表整个数组的地址,&arr+1跳过整个数组的地址。arr代表首个元素的地址,arr+1跳过到下一个元素地址。并且数组名和&数组名也是不同的。数组指针是指向数组的指针。
2023-01-08 12:25:32 172 1
原创 c语言--数据在内存中的存储
1.1 基本的内置类型char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数1.2 类型的基本归类整形、浮点数,构造类型,指针类型,空类型。
2023-01-07 19:52:59 175 1
原创 自定义qsort函数的冒泡实现
qsort函数可以排序各种类型的数据,不仅仅能够排序一种类型的数据。然后是cmp函数对指针指向的值进行比较大小。最后再自定义交换函数swap。首先是qsort函数主体。(结构体数组比较函数)(整形数组比较函数)
2023-01-06 13:17:00 123 1
原创 c语言-指针初阶
通过执行我们可以看到char类型的指针pc在+1后会到下一个地址,而int型指针pi在+1后会向后跳4个字节,也就是4个地址。注:char* 的指针解引用就只能访问一个字节,而 int* 的指针的解引用就能访问四个字节。再执行完第八行后,可以发现a的数据只有第一个字节的值变成了1,其余不变。指针的大小在32位平台是4个字节,在64位平台是8个字节。可以清楚看到不同类型的指针所能控制的a变量的区域。4.指针使用前进行空指针判断,检查指针的有效性。指针-指针得到的是两个指针之间的元素个数。
2022-12-17 22:29:09 225 9
原创 c语言-隐式类型转换,算数转换
*补码转化到原码的形式有两种:第一种:补码取反得到一串二进制序列(注意此序列不是反码)然后给此二进制序列加1得到原码。第二种:补码减1得到反码再给反码取反得到原码。对于在内存中所占字节小于int的数据,例如 char,short类型的数据,在进行加减时会进行隐形转换,转换成int类型的数据后再进行加减,下面我们来通过实例来体会一下隐式转换:
2022-12-16 18:39:22 319 7
原创 扫雷的实现--c语言
扫雷.c来实现我们的整体大概思路,game.c源文件里通过多个函数来实现所有细节功能,头文件game.h则包含了所有的函数声明,以及宏定义,实现多个源文件之间引用和共享。我们随便点一个格子,方格即被打开并显示出方格中的数字,方格中数字则表示其周围的8个方格隐藏了几颗雷,点开的数字是几,则说明该数字旁边的8个位置中有几个雷,如果点的是地雷则会输掉游戏,重新开始,所以扫雷也有一定的运气成分。我是通过两个二维数组来实现的扫雷,一个mine数组来调整雷的信息,一个show数组来打印展示扫的雷效果。
2022-12-13 11:17:50 101 4
原创 操作符认识——C语言
C语言的操作符号分为:算术运算符、关系运算符、逻辑运算符、移位操作符、赋值运算符、条件运算符、逗号运算符、位运算符,等等注:% 操作符的两个操作数必须为整数,其他的几个操作符可以作用于整数和浮点数。4.逻辑运算符5.移位操作符5.1 左移操作符移位规则:左边抛弃、右边补0,如下图移位规则:首先右移运算分两种:6.赋值运算符例如:复合赋值符:7.条件运算符8.逗号运算符逗号表达式,就是用逗号隔开的多个表达式。逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式
2022-11-22 10:49:10 730 3
原创 小游戏--三子棋——N子棋(实现)
1.我们首先可以创建一个三子棋.c源文件,从main函数开始,作为代码运行入口是前提开始写代码。在一个棋盘上,两方选手对弈,先将三个棋连成一条线的一方获胜(包括斜线)三子棋是一种民间传统游戏,又叫九宫棋、圈圈叉叉棋、一条龙、井字棋等。2.在创建一个game.c源文件来实现游戏的具体过程代码。3再来一个game.h头文件来包含声明自己写的函数。我们今天来一个c语言三子棋的进阶,n子棋的实现过程。三子棋大家应该都不陌生吧。下面来具体看下实现代码。
2022-11-11 17:22:06 925 4
原创 青蛙跳台阶问题
通过图中可以看出当有一阶台阶时,只有一种跳法,当有两阶台阶时,有两种跳法,当有三阶台阶时,有三种跳法,当台阶总数n大于二阶台阶的时候,有(n-1)+(n-2)种跳法。⼀只青蛙要上到台阶顶部,每次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上⼀个 n 级的台阶总共有多少种跳法。根据上面总结的数列特点,发现当n>3的时,数列的每个数都等于它的前两个数相加之和。每个跳法是前两个跳法的和,我们发现这其实相当于斐波那契数列,这样我们可以采用递归来解决这个问题。这样就能解决栈溢出问题,优化了代码,提高了代码效率。
2022-11-06 10:22:48 206 9
原创 do...while和goto语句总结
while 循环是 while 循环的变体。在检查while()条件是否为真之前,该循环首先会执行一次do{}之内的语句,然后在while()内检查条件是否为真,如果条件为真的话,就会重复do…while这个循环,直至while()为假。当有很多for循环嵌套时,可以从多个循环中直接跳出来。循环至少执行一次,使用的场景有限,所以不是经常使用。goto语句也称为无条件转移语句。
2022-10-28 13:44:30 658 5
原创 c语言-switch语句
1.如果分支比较少的时候我们使用if else语句解决,如果分支比较多的时候,我们可以考虑使用switch case语句解决。default 是最后一个分支,匹配后不会再执行其他分支,所以这一分支在最后出现时也可以不添加break;我们为了达到执行完每一分支后就结束其他分支执行,这就要给每一个分支后加上break来跳出switch语句。而如果没有break的情况下,当从某一个分支进去后会执行完这一分支及其后面的所有分支。case 后面必须是一个整数,或者是结果为整数的表达式,但不能包含任何变量。
2022-10-22 17:25:38 158
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人