![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
文章平均质量分 77
苏枍
这个作者很懒,什么都没留下…
展开
-
ifndef和pragma once的作用与区别
文章目录ifndefpragma once区别ifndefifndef是c/c++语言中支持的宏定义。 格式大体如下:#ifndef __X__#define __X__ /*...*/#endif“ifndef”是“if not define” 的缩写。 作用就和字面意思一样。如果没有定义 则定义。这样通过宏定义来避免一个文件被多次编译。但是使用宏定义会有宏名冲突的问题,例如类似这样的#define X 3#define X 4这里对X的宏定义重复进行,这样是会编译出错的。原创 2021-05-23 02:15:27 · 516 阅读 · 0 评论 -
C语言中的转义字符详解
C语言中的转义字符详解简介字符嘛,一般在键盘上键入后,可直接显示的字符成为可显示字符。但是有一部分字符,在键盘上没有与之相对应的一个键,这种字符大多是为控制作用而设计的,称为控制字符。如果要键入控制字符,就需要使用转义字符表示。就是使用以”\”开头的字符。转义字符在c语言中,转义字符种类其实不多,大概有这些:\a → 响铃\f → 换页\n → 换行\0 → 字符串结束标识\r → 回车(回到当前行的行首)\b → 退格\t → 水平制表原创 2020-10-27 20:16:05 · 10423 阅读 · 3 评论 -
C语言——关于简单代码的优化问题
C语言——关于简单代码的优化问题概述最近在整理c语言的东西的时候,翻到了自己刚接触计算机语言时写的代码。也是深有感触。在一开始写代码的时候自己是只追求不报错。甚至对很多关键词的理解都不到位。所以写代码的时候也仅仅只是做到了不报错而已。这样的代码其实是很不好的,无论是运行效率和代码可读性而言都是很差的。举一个很简单的例子。这是我刚开始接触c语言时的代码,找两个数中的较大值。int max(int a, int b){ int c; if (a < b) {原创 2020-10-29 21:03:04 · 236 阅读 · 2 评论 -
C语言——关键词static解释
C语言——关键词static解释staticstatic在c语言中可以修饰变量或者函数。总得来说,用static修饰的变量或是函数具有静态的特性。static修饰局部变量static修饰局部变量的主要改变在于改变了局部变量的生命周期。一般的局部变量,生命周期都是在它的函数内,在函数结束的时候,就会释放变量。再次进入函数时,会重新定义这些变量。当这些函数用static修饰的时候,会变成静态变量。就是不会在函数结束时就释放掉。当再次进入函数时,也不需要重新定义。对比下面的代码。void print_1原创 2020-11-05 01:05:39 · 1008 阅读 · 0 评论 -
C语言递归实现扫雷小游戏
目录前言简单的初始界面制作棋盘和布雷“雷”的判断与展开判断游戏结束执行游戏前言为了复习C语言的语法嘛,就简单的写了一下扫雷这样一个小游戏,完全在命令行窗口运行。思路也比较简单,采用数组来模拟棋盘。一个用来模拟地雷的分布的数组。一个用来打印玩家开始看到的数组。在选择坐标后展开周围的地方。判断未展开的格子数与地雷数是否相等。结束游戏。简单的初始界面简单的一个初始界面,用来选择开始游戏和退出。也可以在这里在后续加上难度选择等等功能。void ShowMenu(){ printf("*********原创 2020-11-13 00:14:37 · 363 阅读 · 0 评论 -
C语言指针 * 和 & 总结
C语言指针*和&的总结前言最近复习了C语言中指针,在网上看了一些资料,发现很多人在解释指针的时候提到了“引用”这个概念,但是C语言是没有这个概念的,大概是在学习时是用来cpp的来学习。所以在这里有一点误会。C语言中是没有引用这个概念的。如果大家在刚开始学习c语言时,尽量用GCC编译器。以免混淆一些概念。指针例如在有: int a = 10; int* p = &a;在定义一个整型变量a后 ,定义一个整型指针p指向a,在这里p中存放的是存放变量a的地址。对于指针,谭原创 2020-11-20 01:01:58 · 4497 阅读 · 0 评论 -
C语言 结构体的释义和内存分配
前言还是自己复习到的内容,以前在学习C语言的时候还有缺陷。所以总结一下关于结构体的内容。结构体就是为了封装,这就有一点面对对象的类的影子。然后通过一些方法来访问结构体成员。需要用的struct关键词。结构体代码typedef struct node //定义一个结构体{ char x; // 这里结构体成员 char y; int z;}XYnode; //结构体名字这是结构体最基本的定义。通过typedef struct 来定义一个结构体。这里的node是一个标识符原创 2020-11-26 00:02:57 · 869 阅读 · 0 评论 -
C语言-动态内存分配函数总结
文章目录mallocreallocrealloc可能遇到的错误malloc你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。realloc我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown原创 2020-11-28 22:25:10 · 464 阅读 · 0 评论 -
数组形式的加法-C语言实现
前言一道比较有意思的题。要求利用数组储存数字来完成加法运算。对于非负整数 A 而言,A的数组形式是每位数字按从左到右的顺序形成的数组。例如,如果 X = 1231,那么其数组形式为 [1,2,3,1]。给定非负整数 X 的数组形式 X,返回整数 A+K 的数组形式。来自力扣。原题链接:添加链接描述在遇到需要存储很大的数字的时候,利用数组来完成计算是一个很巧妙的想法。实现思路首先一个取巧的思路,将数组里的数遍历成一个数字。例如先将[1,2,3,4]改为1234,然后在计算。但是当这个数字很大的时原创 2020-12-09 18:27:15 · 7635 阅读 · 0 评论 -
C语言贪吃蛇小游戏
文章目录简单的思路分析蛇属性的设置生成食物让蛇动起来总结简单的思路分析蛇属性的设置生成食物让蛇动起来总结原创 2021-01-06 21:17:41 · 3022 阅读 · 3 评论 -
二叉树的C语言实现及遍历
前言树是一种十分重要的基础数据结构。很多实际问题都会抽象成树来解决。而这篇文章要讲的二叉树则是树中最基本又很重要的一种特殊树。它只的是每个节点的度不大于2的树。基于二叉树还有很多衍生的树。查找树,红黑树,平衡树等等等等。基础思路二叉树可以很形象的看做是一个递归的产物。所以二叉树的问题,基本都可以用递归来解决。无论一颗二叉树是什么样子的。他都可以看做三部分:本节点,左子树,右子树。左子树也可以看成本节点,左子树,右子树。这样的结构。就像图片上这样。所以一个树的节点需要三部分。保存本节点的数据。原创 2021-01-23 03:44:44 · 1967 阅读 · 0 评论 -
C语言排序算法总结(1)--冒泡、选择、插入
目录冒泡排序选择排序插入排序总结冒泡排序冒泡排序是基础排序之一,也是一种稳定排序。无论是逻辑还是代码都比较简单。思路就是比较数组的前后两个元素的大小,如果前面的元素比后面的元素大,就让两个元素交换。 这样当一轮排序结束后,最大的数就会放到最后,这个过程就像水中的气泡一样,一点一点上浮,冒泡排序就是让数据一点一点移动。(图片来自网络)于是每走完完整的一趟,下一次就可以少比较一次,因为最大的数已经在最后面了,所以我们就可以使用双层循环,一层循环控制一共需要走多少个循环,里面的循环控制这一次一共需要比原创 2021-01-28 23:08:50 · 238 阅读 · 0 评论 -
C语言排序算法总结——希尔排序
这里写目录标题前言思路代码总结前言之前我们总结了比较简单的几种排序方法。冒泡,选择,排序。但是也提到了这些排序方法的缺陷。时间复杂度太高,在有大量数据需要排序的时候,会需要浪费太多的时间。所以在很多场景中是不适合使用。我们这次总结一种时间复杂度更优秀的希尔排序。思路希尔排序是以插入排序为基础的改进版本。是由Shell提出的方法。所以就叫希尔排序了。。插入排序的基本思路是:将元素插入到一个有序的元素集合中。在使用插入排序时,我们是一个接一个的。希尔排序的思想是:先确定一个flag,将待排序数组分为原创 2021-02-02 23:44:42 · 436 阅读 · 0 评论 -
C语言排序算法总结——堆排序
文章目录前言思路代码实现前言这次我们介绍堆排序。堆是一种完全二叉树的数据结构。他的父节点总会大于他的子节点叫做“大堆”。他的父节点总会小于他的子节点叫做“小堆”。虽然画的很丑,但是结构大体如图这样的。思路我们用数组来保存二叉树。每个父节点的左子节点的下标,是父节点下标的两倍加一,右子节点的的下标,是父节点下标的两倍加二。 我们之前在介绍二叉树时有介绍这样的方法。所以我们先构建一个用来创建堆的结构体:typedef struct Heap{ DATATYPE* _val; DAT原创 2021-02-12 13:19:53 · 168 阅读 · 0 评论 -
C语言排序算法——快速排序
文章目录快速排序实现思路实现代码快速排序快速排序是将等待排序的集合分成两部分,设定一个k值,其中一部分小于这个k值,另外一部分大于这个k值。对每个部分重复这个过程。知道每部分都只有一个元素的时候。就可以完成排序了。实现思路首先我们需要选取一个k值, 一般情况下我们可以使用数组的第一个值或者最后一个值。假设我们先选取数组的第一位为k值。 我们假设为6。然后我们利用两个指针,一个指针(left)从左边开始向右移动,一个指针(right)从右边开始向左移动,当left指针找到一个大于k值时停下,当r原创 2021-02-21 19:47:54 · 7151 阅读 · 0 评论