![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
C/C++学习
文章平均质量分 74
学习C/C++
于本淡
旅游or编程
展开
-
类和对象(上)_cpp
1.类的定义1.类的定义1.1类定义格式•class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或者成员函数。•为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。•。原创 2024-07-11 12:21:43 · 634 阅读 · 0 评论 -
C++入门基础_cpp
1.C++发展历史C++的起源可以追溯到1979年,当时Bjarne Stroustrup(本贾尼·斯特劳斯特卢普,这个翻译的名字不同的地⽅可能有差异)在⻉尔实验室从事计算机科学和软件⼯程的研究⼯作。⾯对项⽬中复杂的软件开发任务,特别是模拟和操作系统的开发⼯作,他感受到了现有语⾔(如C语⾔)在表达能⼒、可维护性和可扩展性⽅⾯的不⾜。原创 2024-07-08 15:44:58 · 979 阅读 · 0 评论 -
从0开始用C写贪吃蛇(基于链表)
1.游戏背景贪吃蛇是久负盛名的游戏,它也和俄罗斯⽅块,扫雷等游戏位列经典游戏的⾏列。2.游戏效果演示3.实现目标使⽤C语⾔在Windows环境的控制台中模拟实现经典⼩游戏贪吃蛇。4.技术要点C语⾔函数、枚举、结构体、动态内存管理、预处理指令、链表、Win32 API等。5.控制台程序平常我们运⾏起来的⿊框程序其实就是控制台程序。5.1。原创 2024-04-21 19:52:34 · 2525 阅读 · 4 评论 -
动态内存管理
有时会我们发现过去申请的空间太⼩了,有时候我们⼜会觉得申请的空间过⼤了,那为了合理的适合内存,我们⼀定会对内存的⼤⼩做灵活的调整。当是情况2 的时候,原有空间之后没有⾜够多的空间时,扩展的⽅法是:在堆空间上另找⼀个合适⼤⼩的连续空间来使⽤。当是情况1 的时候,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发⽣变化。但是对于空间的需求,不仅仅是上述的情况。这个函数调整原内存空间⼤⼩的基础上,还会将原来内存中的数据移动到 新 的空间。指向的空间不是动态开辟的,那free函数的⾏为是未定义的。原创 2024-04-22 17:30:00 · 692 阅读 · 0 评论 -
0基础深入理解指针(4) 回调函数 qsort函数使用
时,被调⽤的函数就是回调函数。回调函数不是由该函数的实现⽅直接调⽤,⽽是在特定的事件或条件发⽣时由另外的⼀⽅调⽤的,⽤于对该事件或条件进⾏响应。如果你把函数的指针(地址)作为参数传递给另⼀个函数,当这个指针被⽤来调⽤其所指向的函数。此函数使用的排序算法通过调用指定的函数来比较元素对,并将指向它们的指针作为参数。大家可以看见我们这里使用了void*指针,可以在我的之前的帖子里看见。对数组的元素进行排序,每个元素的字节长度为 ,使用函数确定顺序。我们学了上面的知识,接下来,我们就玩一个难一点的。原创 2024-04-22 17:30:00 · 296 阅读 · 0 评论 -
void * 指针的作用_C
4.作为数据结构的一部分:在某些情况下,你可能想在一个数据结构中存储一个指针,但不确定这个指针将指向什么类型的数据。当你解引用一个void*指针时,你必须确保你知道它实际上指向的是什么类型的数据,并将其正确地转换为该类型的指针。它可以被赋值为任何类型数据的地址,但是在解引用它之前,通常需要将其强制转换为特定的类型指针。2.作为回调函数的参数:当回调函数需要接受不确定类型的参数时,可以使用void*。需要注意的是,虽然void*提供了很大的灵活性,但它也带来了类型安全的问题。原创 2024-04-19 19:37:33 · 204 阅读 · 3 评论 -
0基础深入理解指针(3)
⾸先我们再次理解⼀下⼆维数组,⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。所以,根据数组名是数组⾸元素的地址这个规则,⼆维数组的数组名表⽰的就是第⼀⾏的地址,是⼀维数组的地址。那就意味着⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址,那么形参也是可以写成指针形式的。那要把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组,那函数指针的数组如何定义呢?那数组指针变量应该是:存放的应该是数组的地址,能够指向数组的指针变量。原创 2024-04-21 17:30:00 · 273 阅读 · 1 评论 -
0基础深入理解指针(2)
这个代码搞明⽩后,我们再试⼀下,如果我们再分析⼀下,数组名arr是数组⾸元素的地址,可以赋值给p,其实数组名arr和p在这⾥是等价的。那么在数组传参的时候,传递的是数组名,也就是说本质上数组传参本质上传递的是数组⾸元素的地址。同理arr[i] 应该等价于 *(arr+i),数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)那么在函数内部我们写。原创 2024-04-19 20:13:25 · 288 阅读 · 1 评论 -
0基础深入理解指针(1)
内存和地址内存和地址。原创 2024-04-19 16:12:44 · 841 阅读 · 1 评论 -
数组详解_C 下:二维数组
前⾯学习的数组被称为⼀维数组,数组的元素都是内置类型的,如果我们把⼀维数组做为数组的元素,这时候就是⼆维数组,⼆维数组作为数组元素的数组被称为三维数组,⼆维数组以上的数组统称为多维数组。原创 2024-03-28 20:00:53 · 440 阅读 · 0 评论 -
数组详解_C 上:一维数组
我们⼜知道数组中所有元素的类型都是相同的,那只要计算出⼀个元素所占字节的个数,数组的元素个数就能算出来。有了下标访问操作符,我们就可以轻松的访问到数组的元素了,⽐如我们访问下标为7的元素,我们就 可以使⽤ arr[7]有了前⾯的知识,我们其实使⽤数组基本没有什么障碍了,如果我们要深⼊了解数组,我们最好能了 解⼀下数组在内存中的存储。以后在代码中需要数组元素个数的地⽅就不⽤固定写死了,使⽤上⾯的计算,不管数组怎么变化,计算出的⼤⼩也就随着变化了。中C语⾔是⼀个关键字,是可以计算类型或者变量⼤⼩的,其实。原创 2024-03-28 19:18:04 · 498 阅读 · 0 评论 -
函数递归_C (详解)
递归其实是⼀种解决问题的⽅法,在C语⾔中,递归就是函数⾃⼰调⽤⾃⼰。上述就是⼀个简单的递归程序,只不过上⾯的递归只是为了演⽰递归的基本形式,不是为了解决问题,代码最终也会陷⼊死递归,导致栈溢出(Stack overflow)。递归的限制条件是什么?递归在书写的时候,有2个必要条件:递归存在限制条件,当满⾜这个限制条件的时候,递归便不再继续。每次递归调⽤之后越来越接近这个限制条件。下面看个列子:求n的阶乘。仔细看代码可以看出我们的思路如下。原创 2024-03-28 18:50:39 · 306 阅读 · 0 评论 -
位运算符详解_C
位运算分为两大类:逻辑运算符:& //位与| //位或^ //异或 ~ //按位取反位移运算符:> //右移进行位运算都要将其转换为二进制后进行运算。原创 2024-02-21 13:12:02 · 455 阅读 · 0 评论 -
扫雷小游戏_详解(带菜单)
为了更加便捷,我们干脆生成11*11的二维数组,外面一圈蓝色的全部存放 ‘0’ 这样就便捷许多。很简单,我们只需要以时间戳为种子生成随机的坐标,将这个坐标的 ‘0’ 替换成 ‘1’ 就可以了。接下来为了使我们写代码过程中便于调试,我们先自定义一个函数展示我们的棋盘。但是如上图黄色位置,当排查的位置处于9*9的边界时,难以计算周围的雷。同时在头文件中声明一下,而函数的内容,我们存放在game.c中。为了直观的观察我们的棋盘的坐标,我们还需要打印除行列号。接下来在代码中实现,就需要我们创建两个9*9二维数组。原创 2024-01-30 19:06:47 · 1604 阅读 · 1 评论 -
时间戳为种子随机数,猜数字_详解(带简易菜单)
下面,我们用 do....while() 写一个简易菜单,人机交互是 do....while 的一个重要功能。接下来,要给用户进行一个选择,所以,我们要嵌套一个 switch 语句。接下来,我们要以时间戳为种子。需要用到 srand()函数。最后,我们定义一个 game()函数,来存放我们的游戏本体。给大家带来一个以时间戳为种子的随机数猜数字程序。一个简单的带菜单猜数字游戏就完成了。这样我们以时间戳为种子就完成了。首先,我们要用到以下头文件。原创 2024-01-24 15:15:00 · 446 阅读 · 1 评论 -
C语言--分支语句和循环语句详解
分支语句经过一段时间的学习和练习,给大家带来了关于c语言中分支语句和循环语句的个人理解。分支语句if语法结构首先,我们来看一下语法结构可见 if 语句分为单分支和多分支,用以处理问题。单分支:表达式1为真 ,执行语句1。反之,执行语句2。多分支:表达式1为真 ,执行语句1。表达式2为真 ,执行语句2。以上都不为真,执行语句3。if的范围if 的范围:默认只能控制一个语句的执行 要控制多个必须要用 { } 括起来else if / else 的范围与 if 一致演示程序。原创 2024-01-23 21:42:36 · 378 阅读 · 0 评论