
C语言学习
文章平均质量分 60
丰富的学习资料,是很好的复习材料。
一起加油学习!
Hey pear!
空杯心态 C/C++ 嵌入式
展开
-
有关循环语句的程序小练习
计算n的阶乘int main(){int i=0;int ret=1;scanf("%d",&i);for(i=1;i<=n;i++){ret=ret*i;}printf("%d\n",ret);return 0;}计算1!+2!+3!+.....+10!int main(){计算1!+2!+3!+.....+10! int i = 0; int j = 0; int sum = 0; int ret = 1; for (i = 1原创 2022-01-16 15:54:38 · 5263 阅读 · 9 评论 -
C语言详解思维导图
在博客上看可能会不清楚,只需要保存在手机上,放大之后就会很清晰了这个思维导图可以作为大家的C语言复习大纲,详细的代码我没有写出来,只是写了一些文字类的描述。代码能力的提升还是得靠自己去刷题,毕竟纸上学来终觉浅。祝大家学习都能更上一层楼!!......原创 2022-05-03 16:50:17 · 1843 阅读 · 12 评论 -
《C语言深度解剖》20题手把手教学
目录1.下面代码输出什么?为什么?2.下面代码会有什么问题,为什么?3.下面的代码i和j的值分别是什么?为什么?4.下面代码里,假设在32位系统下,各sizeof计算的结果分别是多少?5.下面代码的结果是多少?为什么?6.下面的代码,哪些内容可以被改写,哪些不可以被改写7.下面的两段代码有什么区别?什么时候需要使用代码(2)?8.在32位的X86系统下,输出的值是多少?9.0x01<<2+3的值为多少?为什么?10.定义一个函数宏,求x的平方11.下面原创 2022-04-29 16:08:11 · 1421 阅读 · 15 评论 -
程序环境和预处理
目录1. 程序的翻译环境和执行环境2. 详解编译+链接2.1 翻译环境2.2 编译本身也分为几个阶段:3. 预处理详解3.1 预定义符号3.2 #define3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##3.2.5 带副作用的宏参数3.2.6 宏和函数对比3.2.7 命名约定3.3 #undef3.4 命令行定义3.5 条件编译3.6.1 头文件被包含原创 2022-04-12 22:02:44 · 160 阅读 · 8 评论 -
C语言进阶——文件操作
1. 为什么使用文件1.通讯录 - 静态版本2.通讯录 - 动态增长版本此时通讯录中的信息是存放在内存中的,程序退出后,再次运行,又需要重新输入数据3.数据写到文件中,可以数据持久化(文件是存储到硬盘上的)一般数据持久化的方法有:把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。2. 什么是文件磁盘上的文件是文件。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。原创 2022-04-11 14:05:44 · 424 阅读 · 13 评论 -
动态内存管理(重点)
目录1. 为什么存在动态内存分配2. 动态内存函数的介绍2.1 malloc和free2.2 calloc2.3 realloc3. 常见的动态内存错误3.1 对NULL指针的解引用操作3.2 对动态开辟空间的越界访问3.3 对非动态开辟内存使用free释放3.4 使用free释放一块动态开辟内存的一部分3.5 对同一块动态内存多次释放3.6 动态开辟内存忘记释放(内存泄漏)4. 几个经典的笔试题试题1试题2试题3试题45. C/C++原创 2022-04-07 11:31:04 · 218 阅读 · 19 评论 -
通讯录——两个版本(静态/动态)
目录contact.hcontact.ctest.c通讯录:保存1000联系人的信息 增加联系人 删除联系人 修改联系人 查找联系人 排序一个人的信息:姓名性别年龄电话住址test.c 专门测试通讯录通讯录 contact.h 接口的声明contact.c 接口的实现通讯录改造:创建了只有1000个元素(静态版本) 动态增长版本默认运行起来程序只能放三个人的信息, 当通讯录放满的时候,每次增加2个人的空间原创 2022-04-07 09:57:05 · 538 阅读 · 6 评论 -
自定义类型:结构体,枚举,联合
本章重点:结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段(位段的填充&可移植性)枚举枚举类型的定义枚举的优点枚举的使用联合联合类型的定义联合的特点联合大小的计算1 结构体结构体关键字:struct1.1 结构的基础知识结构是一些值的集合,这些值称为成员变量。结构的每个成员可以是不同类型的变量。1.2 结构的声明struct tag{m原创 2022-04-01 21:57:36 · 185 阅读 · 15 评论 -
字符串和内存函数
求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数介绍strncpystrncatstrncmp字符串查找strstrstrtok错误信息报告strerror字符操作内存操作函数memcpymemmovememsetmemcmpC语言本身是没有字符串类型的,字符串通常放在常量字符串 中或者 字符数组 中。字符串常量 适用于那些对它不做修改的字原创 2022-03-24 22:07:32 · 169 阅读 · 21 评论 -
指针进阶大总结
指针的概念:指针就是个变量(指针变量),用来存放地址,地址唯一标识一块内存空间。 指针的大小是固定的4/8个字节(32位平台/64位平台)。 指针是有类型,指针的类型决定了指针的+-整数的步长,指针解引用操作的时候的权限。 指针的运算。内存会划分为小的内存单元,每个内存单元都有一个编号,这个编号就被称为地址,这个地址也叫指针内存编号=地址=指针指针或地址要存储就可以存放到指针变量中int* p;指针+-整数指针-指针指针的关系运算1.字符指针在指针的类原创 2022-03-19 17:49:51 · 1353 阅读 · 28 评论 -
数据的存储
1.数据类型介绍基本内置类型:char //字符数据类型short //短整型int //整形long //长整型long long //更长的整形float //单精度浮点数double //双精度浮点数1.1类型的基本归类:整型家族:char( char虽然是字符类型,但是字符类型存储的时候,存储的是字符的ASCII码值,ASCII码值是整数)unsigned charsigned char...原创 2022-03-09 10:18:38 · 260 阅读 · 19 评论 -
整型提升知识点
C的整型算术运算总是至少以缺省整型类型的精度来进行的。char也算整型家族为了获得这个精度,表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为整型提升。int main(){ char c1 = 3; char c2 = 127; char c3 = c1 + c2; //c1,c2在运算前要转换成整型才能参与运算,因为c1,c2是char类型 printf("%d\n",c3); retur原创 2022-03-09 10:04:40 · 302 阅读 · 6 评论 -
实用调试技巧
调试(Debugging/Debug)Debug 调试版本 不作任何优化 程序员使用Release 发布版本 最优 用户使用快捷键win - >快捷键没反应需要+fn使用mac ->command+快捷键f5 开始调试,不会单独使用,一般和f9配合使用f9 切换断点/(设置)取消断点断点处右击->条件 设置一个条件断点接下来使用f10可以逐过程依次接着从断点之后进行调试f10 逐过程 遇到函数不进入函数,直接执行完函数的内容原创 2022-03-03 21:09:16 · 128 阅读 · 1 评论 -
初识结构体
目录1.结构体的声明2.结构体成员的访问3.结构体传参1.结构体的声明1.1结构体的基础知识结构体是一些值的集合,这些值被称为成员变量。结构的每个成员可以是不同类型的变量1.2结构的声明struct tag//类型名{ member-list;//成员变量}variable-list;//变量列表 //结构体类型的声明struct Stu{ char name[20];//名字 int age;//年龄 char sex[8]原创 2022-02-21 21:09:00 · 184 阅读 · 7 评论 -
初阶指针大全
指针是什么?理解要点:指针是内存中一个最小单元的编号(地址) 口头语中说的指针,通常指的是指针变量32位虚拟地址空间CPU——32位地址——地址线传输—>内存 4GB4byte64位虚拟地址空间CPU——64位地址——地址线传输—>内存8byte指针变量通过&(取地址操作符)取出变量的真实地址,把地址存放到一个变量中,这个变量就是指针变量。int main(){ int a = 10;//在内存中开辟一个空间 int* p =原创 2022-02-19 21:34:30 · 172 阅读 · 9 评论 -
详解操作符
算术操作符 + - * / %/3/2 结果是整数1(除号两端都是整数执行整数除法)3.0/2 3/2.0 结果是小数(除号两端至少有一个是小数执行小数除法)%9%2 求的是余数(取模操作符两端必须是整型)有范围移位操作符操作的是二进制位<< 左移操作符>> 右移操作符注意:不能移动负数位(num>>-1)左移int main(){ int a= 5; int b = a <原创 2022-02-06 17:13:02 · 582 阅读 · 0 评论 -
C语言写小游戏——扫雷
game.h#include <stdio.h>#include <stdlib.h>#include <time.h>#define ROW 9#define COL 9#define ROWS ROW+2#define COLS COL+2#define EASY_COUNT 10//初始化void init_board(char arr[ROWS][COLS], int rows, int cols, char set);//打印原创 2022-02-06 14:52:23 · 2733 阅读 · 0 评论 -
如何用C语言编写小游戏让你的学习不在无聊——三子棋
分为三部分入手,更轻松学会。test.c 测试游戏的逻辑//测试三子棋的逻辑#include "game.h"void menu(){ printf("********************\n"); printf("**** 1.play ****\n"); printf("**** 0.exit ****\n"); printf("********************\n");}void game(){ char ret = 0; //存放下原创 2022-01-22 23:29:46 · 3572 阅读 · 15 评论 -
数组知识大总结
一维数组的创建和初始化数组的创建数组是一组相同类型元素的集合tyoe_ty arr_name [const_n]数组元素类型 常量表达式,指定数组大小注意:C99中引入了变长数组(长度可变)的概念,允许数组大小用变量来制定,如果编译器不支持C99的变长数组那就不能使用VS2019不支持变长数组数组的初始化创建的同时并赋值int main(){ int arr1[10] = {1,2,3,4};//不完全初始化//10 int arr2[原创 2022-01-22 14:09:10 · 823 阅读 · 14 评论 -
22.1.18函数
函数是什么?函数是子程序(独立模块,由一条或多条语句组成)一般会有输入参数和返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。C语言:库函数 自定义函数库函数常用、基础早期C语言没有库函数把一些常用的功能实现成函数,集成为库,由C语言直接提供C语言标准,就可以直接规定库函数标准例如:int strlen(const char* str)功能:求str指向字符串的长度C语言常用库函数:IO函数 字符串操作函数原创 2022-01-18 14:30:24 · 382 阅读 · 15 评论 -
猜数字小游戏and关机程序
猜数字小游戏通过算法进行的随机其实是伪随机game()menu菜单input随机数的生成方法rand()时间戳获取的是运行时电脑上的时间%100的数字是0-100随机数的生成不能放到循环里,因为每次猜的数不知道大小永远是随机的//猜数字游戏//1. 电脑随机生成一个数字(1~100)//2. 玩家猜数字// 玩家猜小了,就告知猜小了// 玩家猜大了,就告知猜大了// 直到猜对为止//3. 游戏可以一直玩#include<stdl原创 2022-01-16 15:58:46 · 3365 阅读 · 10 评论 -
22.1.15分支与循环语句
目录分支语句循环语句C语言是结构化的程序语言顺序结构 选择结构 if switch 循环结构 while for do-whileC语句:表达式语句 函数调用语句 控制语句 复合语句 空语句控制语句条件判断语句(分支语句) if switch 循环执行语句 do while while for 转向语句 break goto continue return分支语句if语句语法结构:if(表达式) 表达式结果为真执行语句..原创 2022-01-15 17:07:38 · 299 阅读 · 8 评论 -
C语言小知识点
程序的执行总是从main函数开始 #头文件可以放中间 一条c语句对应转换成一条机器指令❎C语言对预处理命令行的处理是在程序执行的过程中进行的❎函数形参不可以传回对应实参数据只能从实参单向传递给实参函数形参和实参分别占用不同的存储单元没有指定函数形参存储类别是自动auto 使用时才占用内存单元的变量auto和register算法算法的有穷性:算法程序的运行时间是有限的算法时间复杂度的度量:执行算法所需要的基本运算次数常量定义常量必须用类型名设定常量类型❎原创 2022-01-10 13:55:07 · 1289 阅读 · 0 评论 -
12.14初识C语言
多组输入int iq=0; while(scanf("%d",&iq))scanf函数在调用失败的时候,读取失败的时候,会返回EOFEOF-end of file放在文件末尾作为文件结束存在的 -1单目操作符-只有一个操作数! 逻辑反操作- 负值+ 正值& 取地址sizeof 操作数的类型长度(以字节为单位)、~ 对一个数的二进制按位取反-- 前置,后置--++ 前置,后置++* 间接访问操作符(解引用操作符)(类型) 强原创 2021-12-15 18:30:41 · 186 阅读 · 2 评论 -
21.12.12C语言入门小知识点
常量1.字面常量20;3.14;直接写出的“abcd”字符串常量 'a'字符常量2.const修饰的常变量本质是变量,不能使用在数组定义时,指定大小const是一个C语言的关键字常属性(不能被修改)3.#define定义的标识符常量可以用在数组定义中4.枚举常量枚举-一一列举性别:男,女,保密三原色:红色,绿色,蓝色星期:1 2 3 4 5 6 7C语言提供了一个枚举类型enum(枚举关键字)默认枚举常量赋初值从0开始,之后每个原创 2021-12-12 16:09:23 · 382 阅读 · 0 评论 -
关于VS编译器解决scanf问题
VS编译器认为C语言提供的scanf函数不安全 越界所以VS提供了一个安全版本scanf_s但是不具有跨平台性且用法与scanf有差异解决办法拷贝#define _CRT_SECURE_NO_WARNINGS 1必须放在最开头VS中 新建的源文件都是拷贝newc++file.cpp文件下载使用everything工具查找右键鼠标打开路径将此文件复制一份到桌面,点开并在里面输入之前拷贝内容保存然后将此文件重新复制在之前打开的newc++fil..原创 2021-12-11 17:05:08 · 822 阅读 · 7 评论 -
21.12.10C语言学习
快捷键windows+L快速锁屏windows+R弹出终端qq截图 Ctrl+Alt+A计算机语言,算法和数据结构,操作系统,计算机网络,项目实战。1.初识c语言C语言是一门高级语言,应用于底层开发高级→低级机器语言(二进制)→汇编语言(助记符)→B语言→C语言(c++ Python JAVA)ANSI C 89/90最广泛vs2019-集成开发环境编辑器+编译器+调试器2.第一个C语言程序编译器-VS2019创建项目创原创 2021-12-10 22:14:19 · 566 阅读 · 0 评论