01-C语言进阶篇与常见面试题笔记
01.工具原理及C语言语法基础1.1 - 计算机指令概述及C语言如何学计算机工作方式简介
可以把内存暂且人认为是存储指令的仓库,cpu从仓库中取出指令一条条执行,cpu需要通过地址找到内容,所以需要一个地址线
,通过地址线的选择选到仓库中的某一个位置,cpu向仓库发出读写的命令,内存就会通过一条数据线与cpu进行相应的读写操作。
内存成本高,速度快
外存成本低,速度慢,但是容量大
问题:CPU里的指令长什么样?
ARM处理器的指令,以-32bit的指令为例
对于32位的理解:可以理解为有32个盒子,每个盒子有两种选择,2^32个选择
汇编语言不便于阅读
1.2 - 编译器介绍及系统环境变量翻译官有哪些?
微软阵营(闭源):MSVC(vs编译器内部标准)
开源组织阵营GNU:gcc
为了偏向于底层的开发所以选择WinGW进行学习。
minGW
安装教程参考:https://blog.csdn.net/wxh0000mm/article/details/100666329
MinGW 的全称是:Minimalist GNU on Windows 。它实际上是将经典的开源 ...
C语言项目 微信小游戏《羊了个羊》
需求图形库:easyX
image:背景图bk.jpg,卡片图lingdang.png,shu.png,cao.png
miss:背景音乐yang.mp3
思路首先需要导入图片
定义图片
三板斧:1.定义 2.加载 3.渲染
1234567891011121314151617181920212223242526272829#include<stdio.h>#include<easyx.h>#include<windows.h>//导入音乐和图片时用到#pragma comment(lib,"Winmm.lib")//导入图片前先定义图片IMAGE img_bk;//背景图片IMAGE img_item[3];//三维数组//定义宽高const int WIDTH = 400;const int HEIGHT = 760;void loadImag(){ //加载 loadimage(&img_bk,"images/bk.jpg", WIDTH, HEIGHT); loadimage( ...
C/CPP 指针变量 | 数组指针 | 指针数组 | 野指针 | 空指针
普通变量和指针变量共性
PS:
可见这4个函数的汇编指令完全一致,无论是什么类型的指针变量,对指针变量的读写跟普通变量没有任何区别,所谓的指向只是描述指针变量的值时多少而已,就读写而言,指针变量跟普通变量没有任何区别。
特性普通变量的值常常用于数学计算,而指针变量常常用来定位内存。
普通变量可以不赋初值,但是指针变量的初值必须万分慎重,因为未来的*操纵会以这个初值为目标内存地址,往里面读写数据(可以才C primer plus中看到相应分析)
所以给指针变量赋值一定要是合法合理的内存地址,读取非法的地址程序会修改其他的内存中的值导致程序崩溃,野指针。
空指针和野指针野指针:定义了一个指针变量,如果没有进行初始化,系统就会有可能随机赋值一个地址给这个指针变量,也就是说,这个指向指向一个未知的区域。
空指针:空指针不是指向常数0,只指向地址0,即NULL,其实换句话说,指针的本质就是地址嘛,空指针就是指针本身的值(地址)为0空指针的作用是防止野指针的出现,因为我们不能知道野指针到底指向哪里,所以我们也无法判断一个指针是否是野指针,这样很危险,但如果养成将指针初始化为空指针的习惯,我们 ...
C++项目贪吃蛇游戏笔记-C语言版
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220 ...
C/C++常用控制台函数
C/C++常用控制台函数前言:包含头文件Windows.h
1#include<Windows.h>
需要说明的是,这个头文件包含了大多数win api函数的定义,绝不仅仅只包含控制台api
查看操作控制台的全部可使用API函数
1.修改和获取标题使用函数:SetConsoleTitleA,GetConsoleTitleA
原型:
123BOOL WINAPI SetConsoleTitleA( _In_ LPCTSTR lpConsoleTitle //填标题);
获取原标题:
1234567891011#include<Windows.h>#include<iostream>using namespace std;int main() { char buf[0xFF]; GetConsoleTitleA(buf,0xFF); //获取当前标题 cout << buf << endl;//输出标题 system("pause");}
更换新标题:
方法 ...
C++项目贪吃蛇游戏笔记-需求文档
GreedySnake需求文档
文件状态:[√] 草稿[ ] 正式发布[ ] 正在修改
文件名称/职位/格式
备注:
版本:1.220901
GreedySnake.md
NULL
撰写人:IO-CtrlX
技术官
NULL
撰写日期:2022-9-1
Year-Month-Day
NULL
版 本 历 史
版本/状态
作者
参与者
起止日期
备注
目 录[1. 文档介绍 ]
[1.1. 产品介绍 ]
[2. 市场问题和机会 ]
[2.1 现有市场存在的问题和机会 ]
[2.2目标市场分析 ]
[2.3 替代品和竞争品 ]
[2.4市场分析结论 ]
[3. 用户说明 ]
[3.1. 目标群体特征 ]
[3.2. 典型用户形象 ]
[3.3. 用户场景分析 ]
[3.4 关键用户需求 ]
[4. 产品说明 ]
[4.1. 产品定位 ]
[4.2. 产品功能性需求 ]
[5. 总结 ]
[6. 附件(调查报告图表)]
1. 文档介绍1.1. 产品介绍GreedySnake是一款贪吃 ...
C++核心编程笔记合集
内存分区模型C++程序在执行时,将内存大方向划分为5个区域
运行前:
代码区:存放函数体的二进制代码,由操作系统进行管理的
全局区(静态区):存放全局变量和静态变量以及常量
常量区:常量存储在这里,不允许修改
运行后:
栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等
堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收
内存四区意义:
不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程
程序运行前分析 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域
代码区:
存放 CPU 执行的机器指令
代码区是共享的,共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可
代码区是只读的,使其只读的原因是防止程序意外地修改了它的指令
全局区:
全局变量和静态变量存放在此.
全局区还包含了常量区, 字符串常量和其他常量也存放在此.
==该区域的数据在程序结束后由操作系统释放==.
示例原理:对比不同类型数据的地址区分区域划分。
123456789 ...
C++项目贪吃蛇游戏笔记-项目分析
GreedySnake项目分析1.项目性分析可行性分析技术可行性
一、界面选择:终端/easyX
界面优缺点:
终端
easyX
鼠标监听
×
√
键盘监听
√
√
文本输入
√
×(不支持在图形界面输入,但是可以在终端和messagebox输入)
二、有哪些核心功能/拓展功能
1.核心功能:移动,转弯,食物随机出现,地图
2.拓展功能:boss,排行榜(积分),道具(加速,积分翻倍)
三、怎么用代码实现核心功能
1.数据怎么表示
长度
地图(墙,食物,空地)
蛇身位置
方向
2.功能逻辑是怎样的
经济可行性
是否需要购买服务器,请技术人员
社会因素可行性
立项
项目开发计划人员
学习进度:
时间安排:
紧急联系:
计划
计划安排:项目流程,那天做什么事
实际进度:当天项目进度,填写项目日志
任务
完成情况:负责人-》未启动,执行中,已完成
监督官:进行时间监督
补充
每天会议
开发环境
进度要求
表面上看起来简单,实际开发难的注意点:计时,其他方向,速度差
判断本次项目能否用到其他技术:局部技术(easyx,文件流,mysql)全局技术( ...
C++项目贪吃蛇游戏笔记-项目代码
.cppmain.cpp12345678#include "controller.h"int main()//程序入口{ Controller c;//声明一个Controller类 c.Game();//整个游戏循环 return 0;}
controller.cpp12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714 ...
C++项目职工管理系统笔记-项目代码
main职工管理系统.cpp1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950#include<iostream>using namespace std;#include "workerManager.h"int main() { WorkerManager wm; int choice = 0; while (true) { //展示菜单 wm.Show_Menu(); cout << "请输入您的选择:" << endl; cin >> choice; switch (choice) { case 0: //退出系统 vm.exitSystem(); break; case 1: //添加职工 vm.Add_Emp(); break; case 2: //显示职工 ...