自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深⼊理解指针(3)

指针我们再次理解⼀下⼆维数组,⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。解释:p先和*结合,说明p是⼀个指针变量变量,然后指着指向的是⼀个⼤⼩为10个整型的数组。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。

2024-07-15 17:18:27 850

原创 深⼊理解指针(2)

1.数组名的理解1.数组名的理解在上⼀个章节我们在使⽤指针访问数组的内容时,有这样的代码:这⾥我们使⽤&arr[0]的⽅式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址,⽽且是数组⾸元素的地址,我们来做个测试。输出结果:我们发现数组名和数组⾸元素的地址打印出的结果⼀模⼀样,数组名就是数组⾸元素(第⼀个元素)的地址。这时候有同学会有疑问?数组名如果是数组⾸元素的地址,那下⾯的代码怎么理解呢?输出的结果是:40,如果arr是数组⾸元素的地址,那输出应该的应该是4/8才对。

2024-06-26 22:07:18 946

原创 深⼊理解指针(1)

1. 内存和地址1.1 内存1.2 究竟该如何理解编址2. 指针变量和地址2.1 取地址操作符(&)2.2 指针变量和解引⽤操作符(*)2.3 指针变量的⼤⼩3. 指针变量类型的意义3.1 指针的解引⽤3.2 指针+-整数3.3 void* 指针4. const修饰指针.1 const修饰变量.2 const修饰指针变量5. 指针运算5.1 指针+- 整数5.2 指针-指针5.3 指针的关系运算6. 野指针6.1 野指针成因6.2 如何规避野指针7. assert断⾔8. 指针的使⽤和传址调⽤8.1 str

2024-06-03 21:51:11 683

原创 函数递归拓展

函数使用递归的方法来实现汉诺塔问题的解决。否则,先将前n-1个圆盘通过辅助柱子移动到辅助柱子上,然后将第n个圆盘移动到目标柱子上,最后再将前n-1个圆盘从辅助柱子移动到目标柱子上。⻘蛙跳台阶问题是一个经典的数学问题,常用于介绍递归和动态规划算法。问题描述如下:假设有一只⻘蛙,它在跳台阶时可以选择每次跳1级或者跳2级。如果有n级台阶,问这只⻘蛙跳上这个n级台阶有多少种不同的跳法。举个例子来说明:假设有3级台阶,那么这只⻘蛙跳上这个3级台阶的不同跳法有几种?所以,对于3级台阶,这只⻘蛙共有3种不同的跳法。

2024-03-18 11:22:01 195

原创 函数递归的详解

递归是什么?递归是什么?递归是学习C语⾔函数绕不开的⼀个话题,那什么是递归呢?递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。1.1递归的思想:把⼀个⼤型复杂问题层层转化为⼀个与原问题相似,但规模较⼩的⼦问题来求解;直到⼦问题不能再 被拆分,递归就结束了。所以递归的思考⽅式就是把⼤事化⼩的过程。

2024-03-18 11:12:04 640

原创 练习编写代码实现

练习1:编写代码实现:求⼀个整数存储在内存中的⼆进制中1的个数。练习1:编写代码实现:求⼀个整数存储在内存中的⼆进制中1的个数。编写代码将13⼆进制序列的第5位修改为1,然后再改回0。练习2:⼆进制位置0或者置1。

2024-03-10 16:41:04 159 1

原创 操作符详解

1.操作符的分类1.操作符的分类•算术操作符:•移位操作符:>•位操作符:& | ^•赋值操作符:+=-=*=/=%==&=|=^=•单⽬操作符:!++--sizeof类型•关系操作符:>=

2024-03-10 16:33:32 1071 1

原创 数组和函数实践:扫雷游戏

一、扫雷游戏分析和设计一、扫雷游戏分析和设计1.扫雷游戏的功能说明•使⽤控制台实现经典的扫雷游戏•游戏可以通过菜单实现继续玩或者退出游戏•扫雷的棋盘是9*9的格⼦•默认随机布置10个雷•可以排查雷◦如果位置不是雷,就显⽰周围有⼏个雷◦如果位置是雷,就炸死游戏结束◦把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束游戏的界⾯:2.游戏的分析和设计。

2024-01-01 14:35:37 866

原创 static 和 extern

一、 static 修饰局部变量和extern都是C语⾔中的关键字。static是 静态的 的意思,可以⽤来:•修饰局部变量•修饰全局变量•修饰函数是⽤来声明外部符号的。在讲解static和extern和生。作⽤域(scope)是程序设计概念,通常来说,⼀段程序代码中所⽤到的名字并不总是有效(可⽤)的,⽽限定这个名字的可⽤性的代码范围就是这个名字的作⽤域。1.局部变量的作⽤域是变量所在的局部范围。2.全局变量的作⽤域是整个⼯程(项⽬)。

2023-12-31 17:04:28 481 1

原创 函数的声明和定义

们要写⼀个函数判断⼀年是否是闰年。代码可能⽐较多,不会将所有的代码都放在⼀个⽂件中;⼀般情况下,函数的声明、类型的声明放在头⽂件(.h)中,函数的实现是放在源⽂件(.c)⽂件中。,函数声明中参数只保留类型,省略掉名字也是可以的。这是因为C语⾔编译器对源代码进⾏编译的时候,从第⼀⾏往下扫描的,当遇到第6⾏的。这个函数,声明函数只要交代清 楚:函数名,函数的返回类型和函数的参数。⼀般我们在使⽤函数的时候,直接将函数写出来就使⽤了。把怎么解决这个问题呢?,所以如果函数定义放在调⽤之前也是可以的。函数的调⽤⼀定要满

2023-12-31 12:34:16 683 1

原创 嵌套调⽤和链式访问

嵌套调⽤就是函数之间的互相调⽤,每个函数就⾏⼀个乐⾼零件,正是因为多个乐⾼的零件互相⽆缝 的配合才能搭建出精美的乐⾼玩具,也正是因为函数之间有效的互相调⽤,最后写出来了相对⼤型的 程序。上⾯的例⼦中,我们就第⼀个printf打印的是第⼆个printf的返回值,第⼆个printf打印的是第三个。所谓链式访问就是将⼀个函数的返回值作为另外⼀个函数的参数,像链条⼀样将函数串起来就是函数 的链式访问。printf函数返回的是打印在屏幕上的字符的个数。在看⼀个有趣的代码,下⾯代码执⾏的结果是什么呢?

2023-12-30 02:38:33 647 1

原创 数组做函数参数

这⾥的set_arr函数要能够对数组内容进⾏设置,就得把数组作为参数传递给函数,同时函数内部在设置数组每个元素的时候,也得遍历数组,需要知道数组的元素个数。所以我们需要给set_arr传递2个参数,⼀个是数组,另外⼀个是数组的元素个数。仔细分析print_arr也是⼀样的,只有拿到了数组和元素个数,才能遍历打印数组的每个元素。在使⽤函数解决问题的时候,难免会将数组作为参数传递给函数,在函数内部对数组进⾏操作。⽐如:写⼀个函数对将⼀个整型数组的内容,全部置为-1,再写⼀个函数打印数组的内容。

2023-12-29 15:54:07 382 1

原创 形参和实参的讲解

在函数使⽤的过程中,把函数的参数分为,实参和形参。在函数的设计中,函数中经常会出现return语句,这⾥讲⼀下return语句使⽤的注意事项。实参和形参的关系

2023-12-29 15:28:55 385 1

原创 函数的简单理解

函数的概念。⾃定义函数Add函数函数的语法形式.库函数的使⽤⽅法标准库和头⽂件函数的概念

2023-12-29 15:21:21 937 1

原创 对于getchar( )函数的理解

库函数查找的链接:原因如下:1、getchar其实返回的是字符的ASCII码值(整数)。2、getchar在读取结束或者失败的时候,会返回EOF。(注意:EOF意思是end of file,本质上是-1.)此时大家会发现和我们预想的不太一样,每一次输出,总是会多输出一个is not an alphabet. 导致在提交代码的时候出现格式错误。为什么会这样呢?

2023-12-24 01:11:04 623

原创 数组的详细讲解

1.数组的概念1.数组的概念数组是⼀组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:•数组中存放的是1个或者多个数据,但是数组元素个数不能为0。•数组中存放的多个数据,类型是相同的。数组分为⼀维数组和多维数组,多维数组⼀般⽐较多⻅的是⼆维数组。2.⼀维数组的创建和初始化1.数组创建⼀维数组创建的基本语法如下:常量值存放在数组的值被称为数组的元素,数组在创建的时候可以指定数组的⼤⼩和数组的元素类型。

2023-12-14 19:27:51 156 1

原创 随机数生成和猜数字游戏实现

我们可以看到虽然⼀次运⾏中产⽣的5个数字是相对随机的,但是下⼀次运⾏程序⽣成的结果和上⼀次 ⼀模⼀样,这就说明有点问题。如果再深⼊了解⼀下,我们就不难发现,其实rand函数⽣成的随机数是伪随机的,伪随机数不是真正 的随机数,是通过某种算法⽣成的随机数。程序中在调⽤ rand 函数之前先调⽤ srand 函数,通过 srand 函数的参数seed来设置rand函数⽣成随 机数的时候的种⼦,只要种⼦在变化,每次⽣成的随机数序列也就变化起来了。那也就是说给srand的种⼦是如果是随机的,rand就能⽣成随机数;

2023-12-13 22:47:49 68 1

原创 超详细的C语言分支和循环

1.if语句C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,其实我们如果仔细分析,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。我们可以使⽤ifswitch实现分⽀结构,使⽤forwhiledo while实现循环结构。如果⼀个数不是奇数,那就是偶数了,如果任意⼀个整数,我们要清楚的判断是奇数还是偶数怎么表示素数⼜称质数,只能被1和本⾝整除的数字

2023-12-11 00:23:22 440 4

原创 C语⾔数据类型和变量的简单介绍

如果局部和全局变量,名字相同呢?变量的分类。数据类型介绍。全局变量和局部变量在内存中存储在哪⾥呢?

2023-12-03 13:21:22 267 1

空空如也

空空如也

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

TA关注的人

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