![](https://img-blog.csdnimg.cn/20210223222647422.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C游记
文章平均质量分 73
80天环游C语言世界
PORKWOTONLEE
此人不懒,但也什么都没有写
展开
-
第24课【C文件的运行和编译】预处理 编译 汇编 链接
目录基本知识框架课堂笔记运行程序载入内存执行主函数结束程序运行编译预处理编译汇编链接基本知识框架Xmind文件下载基本知识框架课堂笔记对于ANSI C,存在两种环境:1. 编译环境:用于将源文件转换为可执行文件2. 运行环境:用于执行可执行文件运行程序载入内存执行主函数结束程序运行编译预处理编译汇编链接基本知识框架Xmind文件下载链接: 资源下载...原创 2021-07-28 02:37:45 · 315 阅读 · 0 评论 -
第23课【文件操作】文件 文件缓冲区 文件指针 文件操作函数
目录基本知识框架课堂笔记文件的定义文件名称文件的类型文件缓冲区文件指针文件操作函数文件的打开 / 关闭fopenfclose文件的顺序读写字符输入输出函数fputcfgetc字符串输入输出函数fputsfgets格式化输入输出函数fscanffprintf数据块输入输出函数freadfwrite文件的随机读写fseekftellrewind文件的结束判断EOF基本知识框架Xmind文件下载基本知识框架课堂笔记文件的定义文件是某一类数据或者信息的集合体,可以是程序,文本,图片或者视频等等文件名称原创 2021-07-24 07:36:48 · 1189 阅读 · 0 评论 -
第22课【内存操作】内存操作函数 内存操作误区 柔性数组
目录基本知识框架课堂笔记内存操作的意义内存操作函数malloccallocreallocfreememcpymemmovememsetmemcmpmemchr内存操作误区C/C++中的内存分配柔性数组柔性数组的特点柔性数组的使用柔性数组的优势基本知识框架Xmind文件下载基本知识框架课堂笔记内存操作的意义可以动态开辟内存空间关于开辟内存空间,按照以往的开辟方式:int a = 5;char str[6] = "Hello";有两个特点:对于变量,空间开辟的大小是确定对于数组,在声明原创 2021-07-21 00:27:29 · 149 阅读 · 0 评论 -
第21课【自定义类型】结构体 枚举 联合体
目录基本知识框架课堂笔记结构体类型结构体的声明、定义和初始化结构体成员的引用结构体内存对齐基本知识框架Xmind文件下载基本知识框架课堂笔记结构体类型结构体的声明、定义和初始化声明:struct unit{ char member1; //结构体成员可以属于不同的数据类型 int member2; // long member3; // struct member4; //结构体的成员可以是其他结构体,这个结构体必须是已经声明过的 struct unit*; //结构原创 2021-07-17 00:53:08 · 177 阅读 · 0 评论 -
第20课【字符串变量处理】字符串输入输出 拷贝 拼接 比较 查找
目录基本知识框架课堂笔记字符串处理函数strlenstrcpy / strncpystrcat / strncatstrcmp / strncmp字符串查找函数strchr / strrchrstrstrstrtokstrspn内存操作函数memcpymemmovememsetmemcmpmemchr其他字符相关函数islowerisupperisalphaisalnumtolowertoupperatoi基本知识框架Xmind文件下载基本知识框架课堂笔记在C语言中,对字符和字符串的处理相当频繁,C原创 2021-07-14 00:56:03 · 182 阅读 · 0 评论 -
第X课【回调函数相关】回调 解耦 事件驱动 同步回调 异步回调
目录系统编程和应用编程系统编程应用编程回调函数回调的形式同步回调异步回调回调的使用系统编程和应用编程系统编程通过灵活使用底层软硬件,编写库文件,提供API给上层应用应用编程通过调用库文件的API,不用过多顾虑底层软硬件,编写程序,以完成任务回调函数回调函数就是通过函数指针去调用的函数回调函数的特别之处其实回调函数中的函数就是我们常规定义的函数,只是它的调用方式不同常规调用:通过函数名,并且根据情况填入适当的输入参数e.g int Max(int a, int b);回调:原创 2021-07-03 05:01:57 · 397 阅读 · 0 评论 -
第19课【指针进阶】字符指针 指针数组 数组指针 数组/指针传参 函数指针 函数指针数组 回调函数
目录基本知识框架课堂笔记基本知识框架Xmind文件下载基本知识框架课堂笔记基本知识框架Xmind文件下载链接: 资源下载原创 2021-07-01 01:48:25 · 113 阅读 · 0 评论 -
第X课【计算机存储原理相关】原码 反码 补码 模
目录机器数真值原码 / 反码 / 补码原码反码补码机器数数值在计算机中的二进制数表示形式称为机器数为什么会出现机器数呢?计算机内部的数字电路最多只能表达两种状态真和假,这就决定了当前的大多数计算机只能识别,存储二进制数,我们常用的十进制数要存储到计算机中时,都要转化成二进制数注意:下讨论中,我都以最简单的八位二进制数举例真值二进制数所要表达的数值称为真值同一组二进制数的真值可能不同同一组二进制数所要表达的数值可能不一样,0110 0001表示十进制数时是97,但是表示ASCI原创 2021-06-11 10:11:52 · 394 阅读 · 0 评论 -
第18课【数据类型】内置数据类型 构造数据类型 数据存储详解
目录基本知识框架课堂笔记基本知识框架Xmind文件下载基本知识框架课堂笔记关于内置数据类型整型数据:用于存储整数,至于short,char等不同长度的int类型,是为了更好的利用有限的存储空间,现在存储空间都足够基本不用去考虑这个问题,一般选用和处理器字长一样的数据类型。char型是字符型,其本质上也是用整型数据存储的ASCII码值浮点型数据:用于存储带小数点的数指针型数据:用于存储数据的地址关于构造数据类型数组类型:用于存储一组相同类型的数据,数组成员只能是原创 2021-06-06 13:31:58 · 140 阅读 · 0 评论 -
第17课【实用调试技巧】VSC调试技巧
目录基本知识框架课堂笔记基本知识框架Xmind文件下载基本知识框架课堂笔记关于调试软件版本:Debug版本:调试版本,包含调试信息,并且不做任何优化,便于程序员调试Release版本:发布版本,进行了各种优化,使得代码从大小和运行速度都是最优的调用栈堆:关于栈堆的默认使用规则优先使用高地址的空间,再使用低地址的空间数组存储在栈堆中时,数组标号由低到高依次从低地址空间到高地址空间存储assert的作用:原创 2021-04-18 00:02:02 · 680 阅读 · 1 评论 -
第16课【结构体】声明 定义 初始化 成员调用
目录基本知识框架课堂笔记基本知识框架Xmind文件下载基本知识框架课堂笔记关于结构体结构体定义其实有两种:// 第一种:// 声明并定义结构体 Stustruct Stu{ char[10] name; // 姓名 int age; // 年龄 char[5] sex; // 性别 char[10] ID; // 学生号};int main(){ struct Stu Lilei; // 生成结构体变量 Lilei = {"Lilei",原创 2021-04-10 16:50:14 · 113 阅读 · 0 评论 -
第15课【指针】定义 运算 大小 类型 解引用
目录基本知识框架课堂笔记基本知识框架课堂笔记关于指针指针是用于存放地址的变量,通过指针可以为宜标示一块地址空间不同数据类型的指针大小根据不同的平台,分为4字节和8字节,那么指针类型的意义是什么?指针+/-整数时的步长,会因为指针类型的不同而不同指针的类型决定了对指针进行解引用操作的权限大小(指针能操作的字节数)。例如int a = 1000,分别用char* pa1和int* pa2去获得变量a的地址, 他们能得到的地址都是一样的,但是当我们进行解引用操作时,*(char* pa1)与原创 2021-02-24 19:50:15 · 124 阅读 · 0 评论 -
第14课【操作符】定义 规则
目录基本知识框架课堂笔记基本知识框架课堂笔记关于算术操作符在进行除法时,/ 除法操作符得到的是商,% 取模操作符得到的是余数% 取模操作符只能用于整型数据,其他的算术操作符既可以用于整型数据也可以用于浮点型数据/ 除法操作符使用时,两个操作数如果是整数,则结果为整数,如果其中一个数为浮点数,则结果为浮点数关于移位操作符移位操作符是对一个数的二进制形式进行操作使用左移操作符进行左移操作时,左边舍弃,右边直接补0;使用右移操作符进行右移操作时,有两种右移方式:1、算术右移:左边以原创 2021-02-14 00:38:08 · 143 阅读 · 0 评论 -
第13课【综合练习】扫雷
目录课后作业扫雷程序流程图头文件game.h游戏相关源文件game.c游戏主体源文件test.c课后作业作业要求:制作一个扫雷游戏扫雷程序流程图头文件game.h主要包含了基本库函数,宏定义和函数声明#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>#include <time.h>#define LINE 5#define ROW 5void原创 2021-02-10 02:37:36 · 568 阅读 · 0 评论 -
第12课【综合练习】三子棋
目录课后作业课后作业题目要求:制作一个三子棋游戏头文件game.h,主要包含了基本库函数,宏定义和函数声明#ifndef __GAME_H__#define __GAME_H__#include <stdio.h>#include <stdlib.h>//使用srand函数生成随机种子#include <time.h>//使用time函数生成随机起点#define LINE 3//棋盘横向宽度#define ROW 3//棋盘纵向宽度void原创 2021-02-06 19:13:30 · 219 阅读 · 1 评论 -
第11课【数组】一维数组 二维数组 定义 创建 使用 存储 作为函数参数
目录基本知识框架课堂笔记基本知识框架课堂笔记在创建数组时,数组的方括号[ ]中不能填入变量,只能使用常量或者省略不填注意在创建字符数组时,下面两种不同的定义方式得到的结果不同,arr2多出一个/0在字符串的末尾char arr1[ ] = {‘a’,‘b’,‘c’};char arr2[ ] = “abc”;数组的下标从零开始,数组的大小可以通过计算得到二位数组的行数可以省略二位数组可以看作是多个一维数组的连续存储,这个一维数组的数组名为二维数组名+行数,例如arr[1][ ]原创 2021-02-03 00:51:54 · 170 阅读 · 0 评论 -
第10课【函数】递归
目录基本知识框架课堂笔记基本知识框架课堂笔记递归的两个必要条件:存在限制条件,达到限制条件后递归停止每次递归调用后,都会越来越接近限制条件递归的算法思路分为三步弄清楚你想要的结果是什么寻找归(限制条件)的条件寻找递(合适的算法)的规律递归的优点和缺点优点:代码简洁,思路简单缺点:容易栈溢出,效率可能会很低关于栈溢出,C语言中存在五大内存区栈区(stack):用于存放函数参数,返回值,局部变量等,由编译器自动分配释放的内存区域(栈溢出是因为递归次数过多,不断原创 2021-02-01 23:54:12 · 136 阅读 · 7 评论 -
第9课【函数】函数 函数分类 函数组成 函数使用
目录基本知识框架课堂笔记基本知识框架课堂笔记库函数的使用和自定义函数的使用:库函数使用时要包含头文件,使用方法为#include <stdio.h>自定义函数在使用时也要包含头文件,使用方法为#include “custom-stdio.h”形式参数实例化后相当于是实际参数的一份拷贝函数的声明要在函数调用之前,关于函数的声明、定义、调用可以这么理解:函数声明(函数存在):有个人叫小明 / 函数定义(函数的功能):一个身份证号为452xxx19960737xxxx的清洁原创 2021-01-29 16:08:51 · 102 阅读 · 0 评论 -
第8课 【分支语句和循环语句】goto语句 课后练习
目录基本知识框架课堂笔记课后练习二分查找法打印闰年求素数求最大公约数基本知识框架课堂笔记goto语句的实现,需要使用者事先设置标号,之后用goto+标号,来实现程序的跳转。它改变了程序原本的执行方向,容易引发一些莫名其妙的bug,所以一般来说不经常使用。goto语句一般使用在深度嵌套的循环语句中,比如有多个for循环语句嵌套,要想让程序一下子跳出循环,使用beak语句很难实现,或者实现起来比较麻烦,单如果使用goto语句的话,就能较快的跳出深度嵌套的循环课后练习二分查找法题目要求:在大小为原创 2021-01-27 22:34:52 · 231 阅读 · 0 评论 -
第7课 【分支语句和循环语句】while for do-while循环语句
目录基本知识框架课堂笔记基本知识框架课堂笔记在使用分支语句和循环语句时,我们要选择执行的代码或者要循环执行的代码,通常都不止一句,如果想要执行多行代码怎么办呢。使用代码块!!!代码块:使用{}封装起来的单段或者多端代码,我们称之为代码块,形成一个独立的代码区。悬空else:由于代码的格式(缩进)不够规范和严谨,有时候会出现不能直观的分清楚if else中的else对应的是哪一个if,这种情况就被称为悬空else。else的配对法则:由后往前,else会优先选择最近的且没有其他else与之对应的原创 2021-01-21 22:05:24 · 192 阅读 · 0 评论 -
第6课【C语言概述】指针变量 结构体
目录基本知识框架课堂笔记基本知识框架课堂笔记int* p和*p的区别,int& p和&p的区别:int* p的意思是定义一个int*类型的指针变量,指针变量的变量名为p,这里的*只作为一个单纯的符号,没有任何其他意义*p的意思是表示以p为地址的空间中的内容,这里的*作为解引用操作符,参与运算int& p = a的意思是p是a的引用,相当于p是a的别名,对变量p的任何操作都等价与对变量a操作,这里的&只作为一个单纯的符号,没有任何其他意义&p指的是取原创 2021-01-20 00:32:21 · 123 阅读 · 2 评论 -
第5课【C语言概述】关键字 #define
目录基本知识框架课堂笔记基本知识框架课堂笔记typedef关键字可以方便使用某一种类型,并不能定义新的类型static关键字可以用于修饰局部变量、全局变量和函数,分别有以下的效果:修饰局部变量:局部变量的生命周期变长修饰全局变量:改变了全局变量的作用域,使得静态的全局变量只能在自身内部的源文件内使用,其它源文件无法引用修饰函数:改变了函数的链接属性,更准确的是改变了函数的链接属性,链接属性由外部链接改为内部链接,使得静态的函数只能在自身内部的源文件内调用,其它源文件无法调用宏:宏的原创 2021-01-19 02:27:48 · 142 阅读 · 0 评论 -
第4课【C语言概述】选择语句 循环语句 函数 数组 操作符
目录基本知识框架课堂笔记基本知识框架课堂笔记算法具有可行性,有穷性和确定性,利用顺序结构,选择结构和循环结构的函数可以解决很多复杂问题逗号表达式,使用方法:(语句一,语句二,语句三…) ,顺序执行语句一二三,表达式的值为最后一个语句计算的值按位与、按位或和按位异或操作符是在讲操作数转化成二进制的基础上进行的逻辑取反!和按位取反~的区别逻辑取反!:对于操作数的值,非0的值变为0,0变为1按位取反~:对二进制下的操作数进行按位取反,0变为1,1变为0赋值操作符和关系操作符中<原创 2021-01-18 13:39:03 · 130 阅读 · 0 评论 -
第3课【C语言概述】字符串、转义字符、注释
目录基本知识框架课堂笔记基本知识框架课堂笔记字符串其实是一个若干个char字符变量组成的数组,字符串以 ‘\0’ 结尾,也就是char arr[] = “abc” = {‘a’,‘b’,‘c’,’\0’},但是当用函数strlen计算字符串长度时,‘\0’不加入计算。转义字符 \ ,主要用于一些特殊的情况:三字母词:在老的编译器中,存在有三字母词的情况,主要是由于过去的革命前辈键盘上可能会缺少某些字符,比如 ] ,用三字母词表示是??)。以下是三字母词对应的字符三字母词对应原创 2021-01-16 01:31:42 · 170 阅读 · 0 评论 -
第2课【C语言概述】变量和常量
目录基本知识框架课堂笔记基本知识框架课堂笔记尽量不使用全局变量,可能会引起不可知的问题字面常量是不可以改变的,不可能会有2 = 3在全局变量和局部变量重名的时候,程序优先使用局部变量的值变量在生命周期结束后,会从内存中销毁,如下代码编译会报错,因为int MAX在执行完之后,int a变量就会被销毁,所以自然也就没有int b = a了#define <stdio.h>int MAX(){ int a = 6;}int main(){ int原创 2021-01-14 17:06:34 · 123 阅读 · 0 评论 -
第1课【C语言概述】基本数据类型
目录基本知识框架课堂笔记基本知识框架课堂笔记char类型不仅能存储字符型变量,表示字符,还可以存储1字节的整型数据,当作数值使用单位换算:1Byte = 8Bit,1024Byte = 1KB,1024KB = 1MB,1024MB = 1GB,1024GB = 1TB基本数值类型书写:默认为10进制开头,如10,202进制以0b开头,如0b110010008进制以0开头,如07216进制以0x开头,如0x2718a86b浮点数(小数)单精度浮点数:2.3f双精度浮点数:原创 2021-01-14 15:47:38 · 163 阅读 · 0 评论 -
第0课【C语言概述】Microsoft Visual Studio 2010旗舰版安装以及初次使用遇到的问题
目录C语言学习教程推荐Microsoft Visual Studio 2010旗舰版及SP1更新包下载链接初次使用遇到的奇葩问题:error LINK1123C语言学习教程推荐最近在看比特鹏哥的C语言教程,讲的非常详细,通俗。(强烈推荐)最喜欢他的一点是他讲课的 框架和思路非常清晰 ,能帮你把更快地将各个零散的知识点串联在一起,不至于混淆,对于我这种用业余时间学习的人来说,每天学习时间都比较分散,学习思路清晰能让你在下一次学习中能更好地衔接上上次听到的内容,感觉他这点做的还是比较好的。比特鹏原创 2021-01-14 13:24:56 · 650 阅读 · 1 评论