自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(51)
  • 收藏
  • 关注

原创 c++ primer plus第三章

3.处理数据 OOP(面向对象编程)的本质是设计并扩展自己的数据类型 变量命名规则a)名称中只能使用字母字符、数字、下划线(_)b)名称第一个字符不能是数字c)字母区分大小写d)C++关键字不得用作名称e)以__或_X(X是任意大写字母)开头的名称被保留给实现使用,_开头的名称保留给实现,用作全局标识符。f)使用像_time_stop或_Donut这样的名称

2017-02-26 23:24:35 282

原创 c++ primer plus第二章

1.对大小写敏感2.预处理编译指令#include3.标准写法 int main()4.注释://内容、/*内容*/5.头文件三种写法:.h、没有后缀、从C库得到的前缀加c,如cstring,没后缀6.c++特有名称空间using namaspace std; 则std内的所有成员都能在声明的作用域内被使用using std::cout; 则std的cout能在声明的作

2017-02-26 22:12:48 252

原创 c++ primer plus第一章

c++具有过程性、面向对象、泛型编程 、C++融合了三种不同的编程方式:①C语言代表的过程性语言                               ②类代表的面向过程的语音                                ③C++模版支持的泛型编程 C语言编程原理:①数据+算法                   ②自顶向下 面向对象编程

2017-02-26 22:00:48 278

转载 常见c语言编译错误解析

C语言编译错误信息及说明1、 在函数 ‘transform’ 中:7: 错误:expected ‘;’ before ‘{’ token    解释:‘{’之前的某个语句缺少分号‘;’; 2、 在函数 ‘Insert_SqList’ 中:6: 错误:‘listsize’ 未声明 (在此函数内第一次使用)    解释:‘listsize’这个变量未声明;

2017-01-19 15:52:05 1053

转载 有缓冲与无缓冲的区别

无缓冲I/O :不是内核不提供缓冲,而是对于用户层来说,没有提供缓存,而对内核来说还是有缓存的数据:数据流->内核缓存->磁盘有缓冲I/O:是指在用户层上再建立了一层缓存区(流缓存区),目的是为了减少read,write等系统调用的使用次数,降低系统开销。数据:数据流->流缓存区->内核缓存->磁盘e.g当用fwrite函数网磁盘写数据时,先把数据写入流缓冲区中,当达到一定

2017-01-17 16:54:31 1293

转载 typedef

基本定义:typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。用途一:与#define的区别typedef 行为有点像 #define

2016-12-25 13:32:25 345

转载 volatile详解

1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中指令的执行并不一定严格按照顺序执行,没有相关性的指令可以乱序执行,以充分利用CPU的指令流水线,提高执行速度。以上是硬件级别的优化。再看软件一级的优化:一种是在编写代码时由程序员优化,另一种是由编译器进行优化。编译器优化常用的方法有:将内存变量缓

2016-12-22 16:18:07 223

转载 链表各类操作详解

链表概述   链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,

2016-12-19 19:06:47 260

原创 简单小编程

输入十进制,输出十六进制#include void dec2hex(char *hex,int num){    int i;    int j = 9;        unsigned int mask = 0x0000000f;    for(i = 0; i     {        if(num & mask > 10)    {

2016-12-19 13:40:42 302

转载 如何写一个链表

有的时候,处于内存中的数据并不是连续的。那么这时候,我们就需要在数据结构中添加一个属性,这个属性会记录下面一个数据的地址。有了这个地址之后,所有的数据就像一条链子一样串起来了,那么这个地址属性就起到了穿线连结的作用。    相比较普通的线性结构,链表结构的优势是什么呢?我们可以总结一下:    (1)单个节点创建非常方便,普通的线性内存通常在创建的时候就需要设定数据的大小    (2)

2016-12-19 13:36:30 2050

原创 课堂笔记--位运算

i++先使用后自加++i先自加后使用int i = 2;int num;(1)num =(i++)+(i++)+(i++)+(i++);   结果i=6  num=8(2)num =(++i)+(++i)+(++i)+(++i);   结果i=6  num=19(3)I = i *((i++)+(++i));              结果i=19(4)i

2016-12-19 13:34:27 163

转载 SVN版本管理器

一、版本控制管理工具SVN详解1.1 什么是SVN(subversion) ?   SVN是近年来非常优秀的版本管理工具,与CSV管理工具一样,SVN是一个跨平台开元版本控制系统,但是SVN与众不同的是,SVN会备份并记录每个文件每一次的修改更新变动。这样我们可以把任意一个时间点档案恢复到想要的某一个旧版本,当然也可以直接浏览指定文件的更新历史记录目前为止:常见的版本管理软件有

2016-12-17 15:27:58 321

转载 主流开发语言和开发环境

主流的开发语言有Java,C++,C#,PHP,Python等。1. Java简介:Java是由Sun Microsystems公司于1995年5月推出的Java程序设计语言(以下简称Java语言)和Java平台的总称。java是面向对象、安全、跨平台、强大稳健、流行的程序设计语言与环境。其跨平台性也已得到了广泛的认可,在计算机的各种平台、操作系统,以及手机、移动设备、智能卡、消费

2016-12-17 15:17:42 6060

原创 课堂笔记——指针、数组、函数

ralloc函数:追加分配;calloc函数:一块一块分配,但块与块之间可能不连续。 MMU:内存管理单元 声明可以优化编译速度。 指针与数组的区别:(1)空间分配:指针动态分配空间,空间利用率高;数组静态分配空间,空间利用率低(2)访问效率:指针间接访问访问效率低,数组直接访问,访问效率高(3)安全性:指针更灵活,但易导致内存泄露;数组会访问越

2016-12-12 10:49:30 202

转载 exit函数与return区别

exit(int n)其实就是直接退出程序,因为默认的标准程序入口为 int main(int argc, char** argv),返回值是int型的。一般在shell下面,运行一个程序,然后使用命令echo $?就能得到该程序的返回值,也就是退出值,在main()里面,你可以用return n,也能够直接用exit(n)来做。unix默认的习惯正确退出是返回0,错误返回非0。   理论上e

2016-12-12 10:34:09 190

原创 课堂笔记——函数与函数指针

数组的地址用数组指针变量来保存。指针数组名做形参用二维指针来接。char **argv  可能是指针的地址,也可能是指针数组。 主函数形参:int main(int argc, char *argv[ ] // char **argv)argv 命令行参数保存空间argc 命令行参数个数(包括命令本身argv[0]) 函数指针int (*p)(int,int);

2016-12-08 16:37:59 232

原创 课堂笔记——数组与指针

定义数组杜绝用变量定义数组长度(除非兼容C99标准)。例如int n;  int a[n]; 数组元素初始化为0:int a[ ] = {0};或者memset(a,0,sizeof(a));一维数组数组名是指针常量,保存的是数组首元素的地址,不能自加。a:数组名,指针常量,一维数组首元素的地址&a:对一维数组名取地址等于一维数组的地址*(&a) = a;:对一维数

2016-12-08 16:19:30 186

转载 strcmp、strcat、strcpy、strncpy函数的实现

四种函数的实现:strcmp:int my_strcmp(char *s1, char *s2){        while(*s1 != '\0' && *s2 != '\0')    {        if(*s1 > *s2){    return 0;}else if(*s1 {   

2016-12-08 16:06:45 217

转载 回调函数的作用

1.回调函数是一个很有用,也很重要的概念。当发生某种事件时,系统或其他函数将会自动调用你定义的一段函数。2.回调函数就相当于一个中断处理函数,由系统在符合你设定的条件时自动调用。为此,你需要做三件事:1,声明;2,定义;3,设置触发条件,就是在你的函数中把你的回调函数名称转化为地址作为一个参数,以便于系统调用。3.所谓回调函数就是按照一定的形式由你定义并编写实现内容,当发生某种事件

2016-12-05 20:30:09 235

转载 Strcat、Strcpy、Strcmp、Strlen函数原型

传说中面试常问的函数,先弄下来:1、Strcat函数原型如下:char *strcat(char *strDest, const char *strScr) //将源字符串加const,表明其为输入参数{       char * address = strDest;             //该语句若放在assert之后,编译出错       asser

2016-12-05 18:14:11 335

原创 课堂笔记

什么是野指针? 野指针是随机指向一块内存的指针,容易造成内存泄露引发段错误。但不一定每次都会产生段错误,因为每一次随机分配的地址可能是已经分配或申请的地址。 如何避免野指针? 避免野指针要养成以下良好的编码习惯:1、当一个指针没有指向时,给它置为空(NULL) (引起注意,指向零地址,不能操作)2、当要往指针指向的空间赋值时,一定要给该指针分配空间。int *p =

2016-12-03 00:24:56 140

原创 课堂笔记

printf是行缓冲(满一行才输出)。输出条件如下:遇到'\n'或者'\r';缓冲区填满。scanf和printf用的同一缓冲区,当printf与scanf连用时会输出。因此在写printf时要加'\n'。 执行程序出现段错误时:1、在每一行代码下面加调试信息printf(“%s: %d\n”,__func__,__LINE__);,  执行后方便找出出现段错误的代码的行数。   

2016-12-02 23:50:42 142

转载 malloc实现原理

malloc()是C语言中动态存储管理 的一组标准库函数之一。其作用是在内存的动态存储区中分配一个长度为size的连续空间。其参数是一个无符号整形数,返回值 是一个指向所分配的连续存储域的起始地址的指针。  动态内存分配 就 是指在程序执行的过程中动态地分配或者回收存储空间的分配内存的方法。动态内存分配不像数组等静态内存分配方法那样需要预先分配存储空间,而是由系统根据 程序的需要即时分配,且分

2016-12-02 20:21:58 201

转载 什么是野指针?应该如何避免?

野指针:指向不确定地址的指针变量。(即没有初始化)使用野指针易因内存泄露出现段错误。而造成内存泄露的原因有两个:1.访问了没有权限的内存(平时我们正确使用指针的时候,系统应经将相应的内存分配给用户,但是如果指向没有分配的内存,系统会判定我们没有权限)2.访问了已经释放了的内存。因为野指针主要是因为我们平时编程习惯造成的,因此我们只能避免野指针的出现,而不能杜绝。(请注意用词)我

2016-11-30 20:59:45 190

转载 局部变量和全局变量的区别

一、变量的分类 变量可以分为:全局变量、静态全局变量、静态局部变量和局部变量。按存储区域分,全局变量、静态全局变量和静态局部变量都存放在内存的静态存储区域,局部变量存放在内存的栈区。按作用域分,全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数

2016-11-28 00:00:50 322

原创 简单小编程

编写一个C函数,将“i am from shanghai"倒置为“shanghai from am i",及将句子中的单词位置倒置,而不改变单词内部结构。#include #include #define MAX_SIZE 1024void reverse_string(char *s1, int len){    int i;    char temp

2016-11-27 23:59:18 344

原创 课堂笔记

计算机三大组成部分:CPU  内存  硬盘 内存与硬盘的区别:内存保存动态数据,断电就会丢失,存放的是运行的数据。而硬盘保存动态数据,断电不丢失,存放的是静态的数据。 内存是共享设备,是稀缺资源,操作系统用来管理资源,给每个进程抽象出4G虚拟地址空间,虚拟空间通过MMU映射到物理地址。 进程虚拟地址空间划分:最高地址1G是内核空间,剩下3G是用户空间。用户空间分为栈空间,堆

2016-11-27 23:51:54 229

原创 课堂笔记

编程取名:2相当于to;4相当于for Sleep(5):延迟5秒后执行 在32位系统中,1字节=8bit,1字=4字节=32bit,半字=2字节=16bit 字节长度(与编译器有相关性):变量在内存中占据空间 sizeof:测量变量或数据类型所占的字节长度  数据类型所占字节长度int  4字节     char  1字节     short  2

2016-11-27 23:35:13 133

转载 char如何计算溢出值

无符号char 类型能标示的数是:0-255有符号char类型能标示的数是:-128-127char c = 128;printf("c = %x \n", c);得到结果是:c = ffffff80这个如何理解 char是一个字节的,怎么变成四字节了???128的十六进制是0x80, 也就是2^7, 二进制看起来像这样:1000 0000 ,赋值给有符

2016-11-24 23:23:09 2397

原创 右左法则

右左法则:先看右再看左,如果右边没有东西就是变量,有(就是函数,有【就是数组,然后看左边,有*就是指针,然后看是int还是char还是void等等。int a;a是一个整形变量int *a;a是一个整形指针变量int **a;a是一个整形指针的指针变量int a[10];a是一个整型数组int *a[10];  a是一个整型指针数组int(*a)[10];  a是一个数组指

2016-11-22 23:38:15 169

原创 简单小编程

1.输入一字符串,把其中最长的数字段输出#include #define MAX_SIZE 1024int continue_max_num_str(char *dest,char *src){    int i;    int len = 0;    int max_len = 0;        while(*src != '\0')    

2016-11-22 23:21:10 280

原创 课堂笔记

现有开发技术有哪些语言,其主流开发方向是什么?c++:服务器程序,虚拟现实VRjava:网页,桌面应用,手机应用 php:网站前端和后台开发、电商         C#:windows应用程序.net:网站python  脚本语言,大数据处理和软件测试(功能测试和性能测试)oc:ios的开发语言      嵌入式中为什么使用C语言开发:所有操作系统的内核都是

2016-11-20 18:09:26 251

原创 课堂笔记

vim命令行模式:yy  复制   3yy 复制3行  p   粘贴     dd  删除     u   恢复/撤销 底行模式:/  查找:?  查找先移动光标:s/hello/hi    把该行的第一个hello换成hi:s/hello/hi/g     把整行的hello换成hi:s/hello/hi/gc     询问是否替换:5,9 s

2016-11-20 17:07:46 158

原创 课堂笔记

mkdir -p add/src (-p:按写的路径新建目录,如果没有add,则新建add目录和src目录)mv add.c add/src/touch add/Makefilemkdir include  放头文件    lib     放库文件    tools    放工具    doc     放文档    scripts  放脚本文件 学习makefi

2016-11-18 17:10:16 221

原创 简单小编程

题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。(用数组完成)#include #define MAX 1000main(){    int i;    int num;    int temp;    int count = 0;    int a[MAX];    pr

2016-11-18 13:18:36 353

转载 Makefile

什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一

2016-11-17 20:17:18 138

转载 Linux开发工具之工程管理器make

此篇博文部分引用梁庚、陈明、马小录老师《高质量嵌入式Linux C编程》一书在实际的开发过程中,仅仅通过使用gcc命令对程序进行编译是非常低效的,原因为:(1)程序往往是由多个源文件组成的,源文件的个数越多,那么gcc的命令行就会越长。此外,各种的编译规则也会加大gcc命令行的复杂度,所以在开发调试程序的过程中,通过输入gcc命令行来编译程序是很麻烦的。(2)在程序的整个开

2016-11-16 16:11:42 295

转载 c语言10个经典小程序

【程序1】 题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去       掉不满足条件的排列。 2.程序源代码:main() { int i,j,k; printf("\n"); for(i=1;i for(j=1;j  for

2016-11-13 17:33:41 705

原创 课堂笔记

调试器gdb功能:① 启动被调试程序② 让被调试程序在指定位置停止③ 当程序被停住时,可以检查程序状态指令:gcc -g test.c -o testgdb testrun运行程序list查看代码quit退出break 行号 设置断点 break后面可以用if加条件break+函数名 执行到该函数info break查看断点信息delete 断点

2016-11-13 17:03:22 182

原创 课堂整理

Linux 开发工具:编译器:gcc          调试器:gdb             工程管理器:make             脚本语言:shell gcc特点:(1)可编译多种语言      (2)交叉编译:当前CPU平台上在不同CPU编译(不同CPU不同汇编) 编译器的编译过程:预处理 编译 汇编 链接 预处理:①头文件展开 ②宏替换

2016-11-13 00:32:08 239

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除