
Po
文章平均质量分 50
蒲公英24
C/C++
展开
-
20161208计算机科学导论01_CPU
目的: 培养一线工程师 学习的是编程而非编程语言学习要求: 笔记,作业,考试制度: 作业/请假条换视频作业批改: 互相批评,学习氛围 脚踏实地的仰望天空程序与CPU中央处理器 组成 寄存器:用来短暂存储值的地方,程序由指令和数据组成,可看成CPU中的内存。寄存器存储速度比内存块几十到百原创 2016-12-08 17:16:20 · 375 阅读 · 0 评论 -
20161208计算机科学导论02_二进制运算
加法:逢二进一 1101 -0011———— 10000减法转化为加负数:最高位为标志位11000101->-69 01000101->6969取反:10111010+110111011 00000011+10111011—————— 10111110->-66-110111101取反010原创 2016-12-09 11:56:35 · 604 阅读 · 0 评论 -
20161209计算机科学导论03_内存
内存分类:ROM:只读RAM:可读可写,数据断电及消失 DRAM: SRAM:引脚分类: 电源引脚:正负极,供电 地址引脚:用于表示地址位置,10根可以存储1Kb,决定存储器大小 数据引脚:输出地址位置的数据用的,决定一次性可以读取或者写入多少数据 控制引脚:控制读或者写……地址引脚和数据引脚一起决定内存大小内存逻辑结构原创 2016-12-09 13:25:18 · 319 阅读 · 0 评论 -
20161209计算机科学导论04_试卷
1. CPU中不含有以下选项中的:4分A: 运算器 B: 寄存器 C: 内存 D: 时钟2. CPU中负责计时的部件是:4分A: 程序计数寄存器 B: 时钟 C: 控制器 D: 靠人来计时3. 对于汇编以下说法正确的是:4分A: 汇编需要编译成机器码B: 汇编是助记符,和机器码一一对应C: 汇编是给CPU原创 2016-12-09 15:23:13 · 1138 阅读 · 0 评论 -
20161210计算机科学导论04_磁盘
磁盘原创 2016-12-10 01:08:07 · 547 阅读 · 0 评论 -
20161210计算机科学导论05_操作系统
操作系统运行环境:包含两个东西 1:操作系统 2:硬件(包含了所用的东西,软件对硬件的要求)操作系统:(windows,linux,mac)(每个系统都有提供自己的API)(操作系统就是在硬件上加的一层壳) 克服了硬件差异:以前的程序可能只能在一种甚至一台电脑上运行 提供统一的接口:调用简单的API就可以实现需要的功能伪跨平台: 源代码:跨原创 2016-12-10 12:31:53 · 800 阅读 · 0 评论 -
20161210计算机科学导论06_函数调用过程
编译:把源代码转换成机器代码(还不可以执行,只能与操作系统交流,不能与硬件交流)(生存obj文件)链接:告诉操作系统,要用哪些,把原码打造成操作系统可用的东西,link过程会生出与平台相关的格式。(windows根据PE结构生存exe文件)汇编代码:C/C++生成与之一一对应的汇编代码,汇编包含三种语句 1:赋值语句:eg int num = 10;(占用内存空间,占用的栈)原创 2016-12-10 22:37:43 · 406 阅读 · 0 评论 -
20161211计算机科学导论07_软件与硬件
软件的重要性:图右:应用软件调用windowsAPI,API通过另外一个翻译器变成操作硬件的代码!现在的应用程序基本已经无法直接操作(控制)硬件了 这与link(只是把一些东西装进应用程序里面去,让windows能够理解)完全不一样,IN和OUT是进行硬件沟通的, IN:寄存器名,端口号; OUT:端口号,寄存器名;原创 2016-12-11 02:58:57 · 334 阅读 · 0 评论 -
20161211C语言基础01_第一个程序
学习的事编程,而非C语言!!!1:电脑显示后缀名。2:新建main.c文件#include//包含头文件int mian(){ printf("Hello World!!!");//调用库函数 return 0;}//大括号内为函数体。//若使用库函数,而没有包含头文件,编译不会出错,但是链接(link)的时候会出错,找不到调用的函数位置。原创 2016-12-11 13:30:30 · 273 阅读 · 0 评论 -
20161211C语言基础02_编程概述
开发一个程序,我们可以认为通过这七个步骤来将在来讲左右的程序分解开来: 1:要知道我们程序的目标是什么! 2:要想清楚我们应该如何让来书写我们的程序。 3:我们开始编程的过程。 4:可以将程序进行测试。 5:进入发行阶段。 6:进行bug的修改。 7:迭代更新。IDE是一套软件的集合:编辑器、编译器、调试器;F5:启动调试原创 2016-12-11 14:27:42 · 215 阅读 · 0 评论 -
20161211C语言基础03_整数类型
C语言变量类型:整数:int:32位(windows下)short:16位,内存会小点,但耗费资源会更多!!!!!long:32位(windows下)longlong是64位unsigned:无符号(unsigned只是前置符)ps:int 和unsigned int,,内存里main存的值都是一样的,解析方式不同,就打印不同的结果,见下面代码小数:float:原创 2016-12-11 17:15:35 · 288 阅读 · 0 评论 -
20161212C语言基础04_char类型
char(字符)类型:通过ASCII表把整数转化成字符;即int型(一定范围内)也可以代表字符;转义字符: \a:警报,执行到printf("%c\a",s);的时候,音响会嘟一声。 \b;退格,就是退一格,下次写入会覆盖原来的最后一个字符。 \f;换页,测试出来就多打了一个♀符号。 \n;换行,跳到下一行。 \r:回车,就是输入回车,可以不用手动按键盘,原创 2016-12-12 11:01:39 · 299 阅读 · 0 评论 -
20161212C语言基础05_复习及作业
小数 浮点数:两种存储方式float:printf的时候用%f输出。double: %f:十进制输出 %e:科学计数法输出 %g:只支持6位的进度,不会输出无效的0。位:字节:字:双字:int:short:long:longlong:unsigned:将会使用所有的长度来表示数值,不会表示负数。char:%原创 2016-12-12 20:31:13 · 246 阅读 · 0 评论 -
20161212C语言基础06_字符串
字符串: char name[3];//若输入的个数大于3,就会继续向后面覆盖,可能会修改后面内存的值,很容易导致程序出现不可预测的错误。若使用scanf_s(“%s”,&name,sizeof(name));会比较安全,程序不会出错,只是获取参数会失效(失败)。 字符串可以保存在字符数组当中,可以用数组的方式来访问每一个地址的值。 printf以%s输出的时候,字符串的结束符为原创 2016-12-12 21:50:04 · 206 阅读 · 0 评论 -
20161213C语言基础07_常量
魔数:随意凭空出现的数值。eg:int a = 100;常量申明的时候就要赋值,不再能改变。C语言中,申明常量有两种方式表现形式: #define Height 170//没有分号!!!,使用宏不安全!宏复杂的时候,里面可能包含公式,优先级等各种问题都可能出现,他是直接替换 const int Height 170;//const使变量常量化,常量不再能改变! 枚举也原创 2016-12-13 11:13:00 · 281 阅读 · 0 评论 -
20161213C语言基础08_printf详解
转换说明:1:类型:整数: %d:有符号十进制。 %i:有符号十进制,可以认为与%d没有任何区别。 %o:八进制输出。 %u:以无符号十进制输出 %x:小写的十六进制 %X:大写的十六进制浮点数: %a: %A: %e: %E: %g:里面会进行匹配,适合什么科学计数法还是小数点,就用什么输出 %G: %f:原创 2016-12-13 19:27:51 · 417 阅读 · 0 评论 -
20161214C语言基础09_scanf详解
scanf: 主要用于接收用户输入,printf输出的时候会有隐式的转换,而scanf完全不会有任何的隐式转换,意味着我们必须用对应的来接收。scanf不认为你的输入可以被转换。scanf的转换说明必须一一对应,scanf本身安全性就比较低!scanf_s更安全!printf会根据转换说明挨个输出,可能会输出错误的值,但scanf输入的值超过转换说明符的值时,多余的值如果是恶意代码,然后原创 2016-12-14 13:14:18 · 234 阅读 · 0 评论 -
20161214C语言基础10_运算符
语句组成:sizeof是在编译的时候就计算好了的常数值,sizeof里面如果是表达式,在程序运行的时候,这个表达式不会被计算!返回的类型为size_t,实际是unsigned int类型,语句分类:const int num = 1;左值一般为可以修改的值,右值一般为不可修改的值。原创 2016-12-14 15:04:46 · 235 阅读 · 0 评论 -
20161214C语言基础11_运算符运用
1:预编译 在编译之前完成的一个过程:替换所有的宏编译的时候(debug和relese两种情况下)在反汇编窗口查看代码,分析过程#define BASE 20;int main(){int i_num = 0;i_num = 10;int sum = i_num;sum = i_num + sum;sum = BASE * 2;int i_othe原创 2016-12-14 15:09:30 · 186 阅读 · 0 评论 -
20161214C语言基础12_循环
循环:while循环:每次循环会判断while里面的条件是否为真,为真就执行里面的循环体!将条件达到之后就会终止循环!while里面的条件一直为真的时候就相当于死循环!_Bool bTrue;布尔值!scanf_s有返回值!符合输入要求的返回1,输入不符合要求就返回0!((_Bool)100) = 1;原创 2016-12-15 00:00:10 · 217 阅读 · 0 评论 -
20161215C语言基础13_分支语句
if() {}else{}用法和while类似,但ifelse只判断一次,符合条件就执行里面的语句。while不能执行条件为否的时候执行什么!cmp:比较,进行减法运算,结果会影响到标志寄存器(符号标志位SF),SF本剧上次执行的结果重置,如果结果为正数,SF为0,结果为负数,SF为1;jge:跳转指令,大于等于后跳转,SF为0的时候跳转,不为0就会顺序执行下面的指令。原创 2016-12-15 13:58:19 · 337 阅读 · 0 评论 -
20161215C语言基础14_函数
C语言: 1:过程语言,把执行过程分解成一个一个的函数,这样方便管理 2:方便我们多次调用,节约工程师的生命(不用一个函数写很多遍)!节约内存。函数: 1:函数 名称 C语言中必须唯一,不可以重复。 2:参数可以使多种多样的,可以自己定义,函数中封装的是算法,当前算法需要用那些数据就可以把这些参数传进去,在算法中就可以取得到这些值,进行一步一步地计算。原创 2016-12-15 14:09:06 · 215 阅读 · 0 评论 -
20161215C语言基础15_函数2
指针:pnum++的时候,默认加的他的类型长度来加,int类型就是加的4,double类型加的8,这种叫做指针的偏移,这样就方便我们很快地,高效地访问同一种类型的数据,但这种操作风险很大,访问到错误的数据不会有太大的风险,如果使用double指针指向int的值的时候,就可能(视编译器而定)改写int后面的值(填充一些无用的值),这样可能修改到其他数据,就可能导致程序崩溃!!!原创 2016-12-15 17:01:21 · 230 阅读 · 0 评论 -
20151215C语言基础16_函数3(数组与指针)
数组用的最多的是用来存储字符串,字符串是以\0来结尾,存储123456789,9个字符,就要用10个空间来存储。如果忘记了这个,他就会把字符串后面的一些乱码打印出来,因为他会一直读取,知道遇到\0;指针指向字符串只是指向支字符串的首地址。 途中pstring被保存到常量区,最后一排的*(pstring + 1) = 'A';运行的时候会发生错误,常量区的值不能被修改,没有权限,这也是使用数原创 2016-12-15 18:38:48 · 218 阅读 · 0 评论 -
20161216C语言基础17_字符串处理函数之fgets与gets
字符串处理函数:字符串输入函数: scanf:每次只能接收一个单词,无法接收整行的数据, gets:主要用于接收一整行的输入,传递参数为一个需要接收数值的数组(之后在新标准C11中被废弃了,会导致缓冲区溢出,不安全),会丢弃换行符后面的数据。(变成可以不用这个了) gets_s:他属于C11标准中是一个可选项,也就是有的编译器可以用这个函数,有的不支持这个函数!会丢弃换行原创 2016-12-16 12:40:25 · 383 阅读 · 0 评论 -
20161216C语言基础18_字符串处理函数
字符串处理函数:以下函数包含头文件:includestrlen:接受一个参数,返回值size_t(约等于unsigned int),strcat:会接收两个参数,把第二个string拼接到string1后面(拼接前会删掉string1的结束符),当前如果string1的长度不是足够大的时候就会导致字符串溢出,导致致命错误strncat:把string2拼接到string1中,第原创 2016-12-16 14:52:59 · 271 阅读 · 0 评论 -
20161216C语言基础19_文件处理函数
C语言文件处理: r:以只读打开文件,如果文件不存在,则返回空指针,打开失败。 w: 以只写打开,没有文件就新建文件,有文件就会清空文件,然后写入。 a:以追加模式打开,没有文件也会新建,但不会清空文件,在文件最末尾处添加。 在三种打开模式之上,新添加了一些组合,让我们更快更好的操作文件 +:任何一种模式后加上+就变成了全新的更新模式,r+,原创 2016-12-16 16:50:40 · 401 阅读 · 0 评论 -
20161217C语言基础20_指针的基础概念
指针:很久以前编程为:[0x334455]$1 = 20; //地址,后面1字节,赋值[0x8711AE]$4 = 100; //地址,后面四个字节,赋值100;[0x23FF33]$4 = ([0x334455]$1)+[0x8711AE]$4; //100,直接拿内存地址来进行运算,很难看懂。[0x8711AE]$4 = [0x23FF33原创 2016-12-17 08:55:47 · 288 阅读 · 0 评论 -
20161222C语言项目01_Reader文件阅读器分析
每一个软件都存在的东西1:交互(后台功能软件除外)。 1:文字交互 2:界面交互(很重要的一点在于可以分区显示,提升用户的体验) 3:声音交互 4:动作交互 所有的交互都是来调用最基础的功能。这些功能都是对数据的处理。2:功能,就是对数据的处理。 1:数值(财务,银行……) 2:字符串(30%都是处理字符串,解析,分析)原创 2016-12-22 12:44:44 · 398 阅读 · 0 评论 -
20161222C语言项目02_Reader指针错误使用实例
C编程注意项:1:使用char处理中文的时候,char是用来存储ASCII编码的,占用的1byte,而一个汉字一般需要占用两个byte,存储汉字的编码也不是ASCII编码,而是Unicode编码,能用char处理中文是因为char里面存储的是数值,他所能够表示的东西是他只占了1byte,一个汉字完全可以是用两个char来存储。char str = "你";//这个占用了三个空间,其中有一个'\原创 2016-12-22 12:48:27 · 269 阅读 · 0 评论 -
20161225C语言项目03_函数参数错误实例
1:不要使用绝对路径(用户输入指定路径的情况除外)。2:每个函数都要有注释 // 至少有 函数名,功能,参数,返回值3:函数命名要尽量让人一看就知道是做什么,在这个函数里面也不要做函数名意思以外的事!4:函数与函数间都是分开的,传递参数看需要什么就传递什么。原创 2016-12-25 12:58:31 · 401 阅读 · 0 评论 -
20170105C语言项目04_编程模块化思维
1:软件开发当中最为重要的一步:规划软件!2:现在流行的开发方式有以下几种: 1:以流程为导向的一步一步的综合开发,团队运作 2:敏捷开发,以需求为导向,写了再改(对开发人员的要求高很多)。 采取那种开发模式取决于项目大小。3:写代码前要先确定有多少函数。明确客户的需求,并分解需求,找到需求当中的一些特点! 这篇小说每一章开头的特点就是一定有一个换行原创 2017-01-05 16:03:00 · 646 阅读 · 0 评论 -
20170107C语言项目05_作业解析与新项目需求
1:功能分解要明确,每个函数做一件事情。如果一个函数要做多件事情,应该有函数的调用来组成。2:注释一定要规范,明确。逻辑要清晰。3:每个公司都有一个审查的过程,就是看代码格式是否规范。一般不会看功能。这个过程往往可以决定工资!4:定义宏,函数等,属于同一个系列,同一个功能块的,命名应该要有共同点。可以的话也可以用枚举来定义常量。而不用宏定义。5:枚举类型:对应变量只能在枚举范围内,原创 2017-01-07 11:51:13 · 344 阅读 · 0 评论 -
20170128C语言提升01_数据本质和static和生命周期和作用域
数据类型: 数据类型其实并不是数据类型,他其实是有一个坑。他可以理解为固定内存大小的一种别名。它是一种模版,它的作用就是规定大小和定位,并不是char类型不可以装数值,不是int不可以表示字符,数据类型的初衷是定义了一种模版,最重要的就是其大小,可以用运算符sizeof()来计算。变量名的本质: 就是内存地址的别名,可以使用别名来访问内存。#define ULONG u原创 2017-01-28 14:23:18 · 234 阅读 · 0 评论 -
20170128C语言提升02_结构体和union和void
上节回顾:typedef和define是有很大差别的,后者只是替换,在多个变量一起赋值的时候一定注意!typedef char* PCHAR;#define PINT int*int main(){ PCHAR p1, p2;//这两个都是char*类型的 char c1 = '1',c2 = '3'; PINT p3, p4;//前面一个是int*,后面一个是int型的。宏定原创 2017-01-28 22:34:13 · 702 阅读 · 0 评论 -
20170131C语言提升03_条件语句
1:复习: 数据类型最大的作用就是确定内存大小。自定义数据类型: typedef和define的区别:在定义指针类型的时候define可能出错,typedef有类型检测,更安全。 enum:常用来定义组合在一起的常量。 struct:常用来组织数据结构,有数据对齐,不要定义空结构体 union:一般用来判断大小端。属性: auto原创 2017-01-31 13:22:28 · 207 阅读 · 0 评论 -
20170131C语言提升04_符号
C语言符号表:原创 2017-02-03 13:45:04 · 337 阅读 · 0 评论 -
20170203C语言提升05_编译
1:编译概述:编译的过程: 1:编译器对代码的预处理:将空格,注释,条件编译指令,宏定义,#include等进行展开得到真实的代码。会生出 *.i 的文件。 2:编译过程:语句分析(词法,语法,语义),代码优化,生成汇编代码。 3:汇编器会讲所有的汇编代码生成机器码。 4:链接:如果使用了库就会有链接过程,分为静态连接和动态连接。2:预处理器:原创 2017-02-03 14:30:34 · 260 阅读 · 0 评论 -
20170214C语言提升06_宏
1:宏经常用来定义常量,宏在编译器预处理的时候会被展开,我们可以使用宏来代替一些逻辑例如:#include #define MAXSIZE 255 #define BEGIN { #define END } #define FOREACH for(i = 0; i<size; i++)int main(){ int i = 0, size = 100;原创 2017-02-14 13:41:09 · 219 阅读 · 0 评论 -
20170214C语言提升07_预编译指令
预编译指令:条件编译指令:属于编译环境和编译器之间的交流指令,预编译指令控制的是代码。#include #define DEMO 5#ifndef DEMO//如果没有定义DEMO做的事情int num = 0;#endif // !DEMO#ifdef DEMO//如果定义了DEMO要做的事情int num = 100;#endif // !DEMO//int mai原创 2017-02-14 15:35:26 · 369 阅读 · 0 评论