自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一万HOURS的知识库

从模仿别人开始 + 持续学习 --> 一万小时 --> 构建自己的知识库 --> 热爱技术

  • 博客(252)
  • 资源 (3)
  • 收藏
  • 关注

原创 赋值操作符重载

1 关于赋值的疑问什么时候需要重载赋值操作符?编译器是否提供默认的赋值操作?编译器为每个类默认重载了赋值操作符。默认的赋值操作符仅完成浅拷贝。当需要进行深拷贝时必须重载赋值操作符。赋值操作符与拷贝构造函数有相同的存在意义。编程实验:默认赋值操作符重载#include <iostream>#include <string>using n...

2018-02-08 18:07:43 708

原创 函数对象分析

1 客户需求函数可以获得斐波那契数列每项的值。每调用一次返回一个值。函数可根据需要重复使用。编程实验:第一个解决方案#include #include using namespace std;int fib(){ static int a0 = 0; static int a1 = 1; int ret = a1; a1

2018-02-05 17:48:41 395

原创 数组操作符的重载

1 问题string类对象还具备C方式字符串的灵活性吗?还能直接访问单个字符串吗?2 字符串类的兼容性string类最大限度地考虑了C字符串的兼容性。可以按照使用C字符串的方式使用string对象。编程实验:用C方式使用string类#include #include using namespace std;int main(){ string

2018-02-01 17:43:14 421

原创 C++种的字符串类

1 历史遗留问题C语言不支持真正意义上的字符串;C语言用字符数组和一组函数实现字符串操作;C语言不支持自定义类型,因此无法获得字符串类型。2 解决方案从C到C++的进化过程引入了自定义类型;在C++中可以通过类完成字符串类型的定义;问题:C++中的原生类型系统是否包含字符串类型? 不。3 标准库中的字符串类C++ 语言直接支持C语言的所有概念;C+...

2018-01-31 16:09:25 376

原创 初探C++标准库

1 有趣的重载操作符其意义是将整数1按位左移2位,即:0000 0001 -> 0000 0100重载操作符,将变量或常量左移到一个对象中!编程实验:重载左移操作符#include const char endl = '\n';class Console{public: Console& operator int i) {

2018-01-29 16:17:43 214

原创 完善的复数类

1 完善的复数类利用操作符重载 统一复数与实数的运算方式统一复数与实数的比较方式编程实验:复数类的实现Complex.h#ifndef _COMPLEX_H_#define _COMPLEX_H_class Complex{ double a; double b;public: Complex(double a = 0, do

2018-01-28 20:49:34 327

原创 LCD1602和12864显示器

1 LCD显示器相关背景1.1 LCD简介(1)显示器,常见显示器。(2)LCD(Liquid Crystal Display),液晶显示器,原理介绍。(3)LCD应用领域。(4)LED OLED。1.2 电子显示器的原理(1)像素(分辨率)。(2)显存,用来做显示的内存。(3)字模。(4)字库。(5)控制器和驱动器。(6)软件+硬件实现功...

2018-01-28 19:53:46 9636 2

原创 操作符重载的概念

1 需要解决的问题下面的复数解决方案是否可行?编程实验:复数的加法操作#include class Complex { int a; int b;public: Complex(int a = 0, int b = 0) { this->a = a; this->b = b; } in

2018-01-27 17:51:35 266

原创 类中的函数重载

1 函数重载的回顾函数重载的本质为相互独立的不同函数;C++中通过函数名和函数参数确定函数调用;无法直接通过函数名得到重载函数的入口地址;函数重载必然发生在同一个作用域中。2 类中的重载类中的成员函数可以进行重载: 构造函数的重载普通成员函数的重载静态成员函数的重载问题:全局函数,普通成员函数以及静态成员函数之间是否可以构成重载?普通成员函数和静态成员函

2018-01-26 17:06:28 302

原创 友元的尴尬能力

1 友元的概念什么是友元?友元是C++中的一种关系;友元关系发生在函数与类之间或者类与类之间;友元关系是单项的,不能传递。 函数是类的友元。2 友元的用法在类中以friend关键字声明友元;类的友元可以是其它类或者具体函数;友元不是类的一部分;友元不受类中访问级别的限制;友元可以直接访问具体类的所有成员。3 友元的语法编程实

2018-01-26 11:59:43 271

原创 二阶构造模式

1 构造函数的回顾关于构造函数: 类的构造函数用于对象的初始化;构造函数与类同名并且没有返回值;构造函数在对象定义时自动被调用。2 问题1.如何判断构造函数的执行结果?(目前无法判断) 2.在构造函数中执行return语句会发生什么?(构造函数直接 返回,执行结束) 3.构造函数执行结束是否意味着对象构造成功?(不)编程实验:异常的构造函数#inclu

2018-01-24 21:26:43 437

原创 AD和DA转换

1 AD转换及其相关背景知识1.1 基本概念(1)什么是AD转换?A(A,analog,模拟的,D,digital,数字的)现实世界是模拟的,连续分布的,无法被分成有限份; 计算机世界是数字的,离散分布的,是可以被分成有限份的; AD转换就是把一个物理量从模拟的转换成数字的。(2)AD转换的意义?(3)什么情况下需要AD转换。1.2 AD转换的原理(1)比较

2018-01-24 20:06:19 47092 3

原创 类的静态成员变量和静态成员函数

1 成员变量的回顾通过对象名能够访问public成员变量。每个对象的成员变量都是专属的。成员变量不能在对象之间共享。2 新的需求统计在程序运行期间某个类的对象数目。保证程序运行的安全性(不能使用全局变量)。随时可以获取当前对象的数目。编程实验:解决方案的尝试#include class Test{private: int mCount

2018-01-23 20:42:54 930

原创 I2C通信之EEPROM

1 EEPROM及其背景知识1.1 EEPROM(1)一些概念:ROM、RAM、PROM(可编程ROM)、EPROM(可擦除ROM)、EEPROM(电可擦除ROM)。(2)为什么需要EEPROM(单片机内部的ROM只能在程序下载时进行擦除和改写,但是程序运行本身是不能改写的。单片机内部的RAM中的数据程序运行时可以改,但是掉电就丢失了。有时候我们有一些数据要存在系统中,要求掉电不丢

2018-01-23 17:29:21 15103

原创 神秘的临时对象

1 有趣的问题下面的程序输出什么?为什么?实例分析:有趣的问题#include class Test { int mi;public: Test(int i) { mi = i; } Test() { Test(0); } void print() { printf("mi

2018-01-23 11:36:45 310

原创 对象的销毁

1 对象的销毁生活中的对象都是被初始化后才上市的。生活中的对象被销毁前会做一些清理工作。问题:C++ 中如何清理需要销毁的对象?一般而言,需要销毁的对象都应该做清理。解决方案: 为每一个类提供一个public的free函数;对象不再需要时立即调用free函数进行清理。存在的问题: free只是一个普通的函数,必须显示的调用;对象销毁前没有做清理,很可能造成

2018-01-22 20:36:46 680

原创 对象的构造顺序

1 问题C++ 中的类可以定义多个对象,那么对象构造的顺序是怎么样的呢?2 对象的构造顺序对于局部对象 当程序执行流到达对象的定义语句时进行构造。下面程序中的对象构造顺序是什么?实例分析:局部对象的构造顺序#include class Test{private: int mi;public: Test(int i) {

2018-01-21 11:04:06 436

原创 初始化列表的使用

1 问题类中是否可以定义const成员?小实验下面的类定义是否合法? 如果合法,ci的值是什么,存储在哪里?class Test{private: const int ci;public: int getCI(){return ci;}};// 编译通过但是定义对象时编译出错。编程实验:类中的const成员#include clas

2018-01-20 11:15:14 292

原创 实时时钟DS1302

1 RTC有关的背景知识1.1 什么是实时时钟(rtc for real time clock)(1)时间点和时间段的概念区分。(2)单片机为什么需要时间点。(3)RTC如何存在于系统中(单片机内部集成 or 单片机外部扩展)。1.2 DS1302介绍(1)数据手册。(2)SPI数字接口访问。(3)内部存着一个时间点信息(年月日时分秒星期几),可以读写,上电

2018-01-19 19:55:54 2927

原创 对象的构造

1 问题:对象中成员变量的初始值是多少?小实验:下面的类定义中成员变量i和j的初始值是多少?编程实验:成员变量的初始值#include <stdio.h>class Test{private: int i; int j;public: int getI() { return i; } int getJ() { retur...

2018-01-16 16:54:22 239

原创 类的真正形态

1 类的关键字问题:经过不停的改进,结构体struct变得越来越不像它在C语言中的样子了!struct在C语言中已经有了自己的含义,必须继续兼容。在C++中提供了新的关键字class用于类定义。class和struct的用法是完全相同的。class和struct有什么区别在使用struct定义类时,所有成员的默认访问级别为public。在用class定义类时,所有成员的

2018-01-16 11:29:13 230

原创 串口通信和RS485

1 通信有关的常见概念1.1 什么是通信(1)人和人之间的通信:说话、写信、狼烟、手势等。(2)人和计算机之间的通信:按键、显示器、鼠标、触摸屏等。(3)计算机和计算机之间的通信?1.2 通信的关键(1)事先约定。(2)基本信息单元。(3)有效信息的编码、传输和解码。1.3 通信的专业性概念(1)同步和异步。(2)单工、半双工、全双工。(

2018-01-16 09:58:32 21728 4

原创 类与封装的概念

1 类的组合电脑一般而言是由CPU、内存、主板、键盘和硬盘等部件组合而成。思考 (1)学习电脑组装需要多少时间? (2)学习电脑组装是否需要学习显示器、键盘、鼠标、主板、内存等部件的设计与制造?2 类的封装类通常分为以下两个部分 类的实现细节类的使用方式当使用类时,不需要关心其实现细节;当创建类时,不需要考虑其内部实现细节。例: 普通

2018-01-15 11:17:11 750

原创 直流电机和步进电机

1 直流电机1.1 什么是电机…1.2 常见电机(1)交流电机:两相、三相。(2)直流电机:永磁、励磁。(3)步进电机、伺服电机。1.3 直流电机详解(1)外观。(2)接线和工作原理。(3)直流电机的驱动问题:不能用IO口直接驱动。1.4 直流电机实验(1)直流电机直接接在开发板的主板的VCC和GND引出接口上看电机是否转动,还可以调

2018-01-14 16:50:40 6392

原创 进阶面向对象

1 你考虑过么?日常生活中,我们都习惯对事物进行分类。那么,这种分类的思想是否可以引入程序设计中呢?2 面向对象的基本概念面向对象的意义在于将日常生活中习惯的思维方式引入程序设计中;将需求中的概念直观的映射到解决方案中;以模块为中心构建可复用的软件系统;提高软件产品的可维护性和可扩展性。类和对象是面向对象中的两个基本概念:类:指的是一类事物,是一个抽

2018-01-14 11:20:24 181

原创 蜂鸣器

1 蜂鸣器的原理1.1 无源蜂鸣器原理(1)早期的蜂鸣器都是无源的。(2)内部结构和材料。(3)发声原理。(4)控制信号,是高低电平相间的方波。(5)电路图。(6)音调如何控制,音调受震动频率控制,就等于控制信号的频率。频率越高音调越高,听起来越刺耳。(7)声音大小如何控制,由硬件决定的,没法写代码去控制声音大小。1.2 有源蜂鸣器(1)无源蜂鸣

2018-01-12 12:41:12 2579

原创 新型的类型转换

1 C 方式的强制类型转化语法: (Type)(Expression)Type(Expression)如:typedef void(PF)(int);struct Point{ int x; int y;};int v = 0x12345;PF* pf = (PF*)v;char c = char(v);//gcc编译不通过,g++编译通过Poin

2018-01-12 11:36:13 215

原创 命名空间

1 C++中的命名空间在C语言中只有一个全局作用域C语言中所有的全局标识符共享同一个作用域标识符之间可能发生冲突。C++中提出了命名空间的概念:命名空间将全局作用域分成不同的部分;不同命名空间中的标识符可以同名而不会发生冲突;命名空间可以相互嵌套;全局作用域也叫默认命名空间。注意:不同的命名空间中可以定义相同命名的全局变量和函数,但是调用的时候必须采用 命名空间名字:

2018-01-11 16:50:59 233

原创 C++中动态内存分配

1 动态内存分配C++中的动态内存分配 C++中通过new关键字进行动态内存申请。C++中的动态内存申请是基于类型进行的。delete关键字用于内存释放。如:变量申请: Type *pointer = new Type; //…… delete pointer;数组申请: Type *pointer = new Type[N]; //…

2018-01-11 16:46:40 242

原创 C和C++相互调用

1 C++和C相互调用实际工程中C++和C代码相互调用是不可避免的。C++编译器能够兼容C语言的编译方式。C++编译器会优先使用C++编译的方式。extern关键字能够强制让C++编译器进行C方式的编译。extern “C”{ // do C-style compilation here}编程实验:C++调用C函数// add.c#include "

2018-01-11 11:19:16 188

原创 定时器和计数器

1 定时器介绍1.1 什么是定时器(1)SoC的一种内部外设。(2)定时器就是CPU的“闹钟”。1.2 什么是计数器(1)定时器就是用计数的原始实现的。(2)计数器可以计算外部脉冲个数。1.3 定时器如何工作(1)第1步:先设置好定时器的时钟源(如果需要的话)。(2)第2步:初始化时钟相关寄存器。(3)第3步:设置定时时间(计数个数)。(4)

2018-01-11 10:14:22 9473

原创 函数重载分析

1 自然语言中的上下文你知道下面词汇中“洗”的含义吗?洗衣服、洗脑、洗脸、洗车、洗马桶……结论:能和“洗”字搭配的词汇有很多,“洗”字和不同的词汇搭配有不同的含义。2 重载的概念重载(Overload):同一个标识符在不同的上下文有不同的意义。如: “洗”和不同的词汇搭配有不同的含义:洗衣服、洗脑、洗脸、洗车、洗马桶……“play”和不同的单词搭配有不同的含义:pl

2018-01-10 11:18:55 246

原创 函数参数的扩展

1 函数参数的默认值C++中可以在函数声明时为参数提供一个默认值。当函数调用时没有提供参数的值,则使用默认值。参数的默认值必须在函数声明中指定,不能在定义中指定。问题:函数定义中是否可以出现参数的默认值?当函数声明和定义中的默认值不同时是否会发生错误?实例分析:默认参数值初探#include int mul(int x = 0);int mai

2018-01-08 16:55:23 294

原创 内联函数分析

1 常量与宏回顾C++ 中const常量可以替代宏常数定义,如: const int A = 3; #define A 3C++中是否有解决方案替代宏代码片段呢?2 内联函数C++中推荐使用内联函数替代宏代码块。C++中使用inline关键字声明内联函数。inline int fun(int a, int b){ return a < b ? a :

2018-01-07 17:30:13 196

原创 按键

1 按键相关知识1.1 按键工作原理(1)内部机械结构。(2)电路连接与原理图中图标。(3)按键电路接法、上拉电阻。上拉是为了让引脚默认是高电平,但是上拉的力量扛不住接地,所以按键没有按下时上拉的力量保证了IO引脚输入为1,而按下后绝对为0。(4)按下和弹起的区。区别就是接不接地的问题,也就是引脚输入为1还是0的问题。(5)按键这个设备对我们的意义:按键对于我们CPU来

2018-01-07 16:25:43 583

原创 内存这个大话题

1 程序运行为什么需要内存1.1 计算机程序运行的目的计算机为什么需要编程?编程已经编了很多年,已经写了很多程序,为什么还需要另外写程序?计算机有这个新的程序到底为了什么?程序的目的是为了去运行,程序运行是为了得到一定的结果。计算机就是用来计算的,所有的计算机程序其实都是在做计算。计算就是在计算数据。所以计算机程序中很重要的部分就是数据。计算机程序 = 代码 + 数据。计算机程

2018-01-05 17:33:01 536

原创 引用

1 变量名回顾变量是一段实际连续存储空间的别名;程序中通过变量来申请并命名存储空间;通过变量的名字可以使用存储空间。问题:一段连续的存储空间只能有一个别名吗?2 引用的基本概念在C++中新增加了引用的概念: 引用可以看作是一个已定义变量的别名;引用的语法:Type& name = var;int a = 4;int& b = a; // b是a的别

2018-01-04 12:08:06 230

原创 LED点阵

1 LED点阵简介1.1 什么是LED点阵(1)外观。(2)作用。(3)内部构造原理图。点阵的优势就是8+8个IO口独立控制8*8个LED亮灭。(4)LED点阵如何工作。1.2 如何驱动LED点阵(1)单片机端口直接驱动。要驱动8*8的点阵需要2个IO端口(16个IO口)、要驱动16*16的点阵需要4个IO端口(32个IO口)。(2)使用串转并移位锁存器驱动

2018-01-03 17:37:59 3212

原创 进化后的const分析

1 C语言中的constconst修饰的变量是只读的,本质还是变量。const修饰的局部变量在栈上分配空间。const修饰的全局变量在只读存储区分配空间。const只在编译器有用,在运行期无用。const修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边。C语言中的const使得变量具有只读属性。const将具有全局生命周期的变量存储于只读存储区。const

2018-01-03 16:49:17 234

原创 C到C++的升级

1 C和C++的关系C++继承了所有的C特性。C++在C的基础上提供了更多的语法和特性。C++的设计目标是运行效率与开发效率的统一。2 C到C++的升级2.1 变量定义C++更强调语言的实用性。所有的变量都可以在需要使用时再定义。2.2 register关键字register关键字请求编译器将局部变量存储于寄存器中。在C++中依然支持register关键字(存在的目的就是为了兼容C语

2018-01-03 11:51:22 363

嵌入式实时操作系统ucos2

这本书看了挺久,今天终于看完了!可以说是ucos2相关著作的经典之作,核心原理讲的很清楚,文中许多地方都提到了为什么要这么设计。毕竟这本书出自ucos2作者之手。 看完前12章之后,本打算继续看后面的移植部分,发现后面是基于古老的80x86机器的移植,果断放弃,本来对这种处理器就不熟悉,这无疑增加了学习难度。重点是学习ucos2如何使用,深入学习ucos2是如何设计的,就不去管移植部分了,现在ucos2多用于单片机上,所以后面的放弃。 学习ucos,这本书必看!只看前300页就足够了。 注意: 1.书签是我在阅读的过程中手动添加上去的,第12章以后是没有书签的。 2.此书比较古老,所以不是蛮清晰,不过为了学习相关知识,我是忍了!终于看完了,哈哈!

2018-06-09

c语言深度剖析(完美高清文字版pdf)

第一章 关键字................................................................................................................................... 9 1.1,最宽恒大量的关键字----auto..........................................................................................11 1.2,最快的关键字---- register............................................................................................... 11 1.2.1,皇帝身边的小太监----寄存器............................................................................. 11 1.2.2,使用 register 修饰符的注意点.............. ...............................................................11 1.3,最名不符实的关键字----static........................................................................................12 1.3.1,修饰变量...............................................................................................................12 1.3.2,修饰函数...............................................................................................................13 1.4,基本数据类型----short、int、long、char、float、double........................................... 13 1.4.1,数据类型与“模子”............................................................................................... 14 1.4.2,变量的命名规则...................................................................................................14 1.5,最冤枉的关键字----sizeof...............................................................................................18 1.5.1,常年被人误认为函数...........................................................................................18 1.5.2,sizeof(int)*p 表示什么意思?........................................................................18 1.4,signed、unsigned 关键字................................................................................................19 1.6,if、else 组合.................................................................................................................... 20 1.6.1,bool 变量与“零值”进行比较...............................................................................20 1.6.2, float 变量与“零值”进行比较.................................................................................21 1.6.3,指针变量与“零值”进行比较............................................................................... 21 1.6.4,else 到底与哪个 if 配对呢?...............................................................................22 1.6.5,if 语句后面的分号............................................................................................... 23 1.6.6,使用 if 语句的其他注意事项.............................................................................. 24 1.7,switch、case 组合........................................................................................................... 24 1.7.1,不要拿青龙偃月刀去削苹果.............................................................................. 24 1.7.2,case 关键字后面的值有什么要求吗?.............................................................. 25 1.7.3,case 语句的排列顺序...........................................................................................25 1.7.4,使用 case 语句的其他注意事项..........................................................................27 1.8,do、while、for 关键字................................................................................................... 28 1.8.1,break 与 continue 的区别.....................................................................................28 1.8.2,循环语句的注意点...............................................................................................29 1.9,goto 关键字......................................................................................................................30 1.10,void 关键字....................................................................................................................31 1.10.1,void a?............................................................................................................31 1.10,return 关键字................................................................................................................. 34 1.11,const 关键字也许该被替换为 readolny....................................................................... 34 1.11.2,节省空间,避免不必要的内存分配,同时提高效率.................................... 35 1.12,最易变的关键字----volatile.......................................................................................... 36 1.13,最会带帽子的关键字----extern.................................................................................... 37 1.14,struct 关键字.................................................................................................................. 38 1.14.1,空结构体多大?.................................................................................................38 1.14.2,柔性数组.............................................................................................................39 1.14.3,struct 与 class 的区别......................................................................................... 40 1.15,union 关键字..................................................................................................................40 1.15.1,大小端模式对 union 类型数据的影响............................................................. 40 1.15.2,如何用程序确认当前系统的存储模式?........................................................ 41 1.16,enum 关键字.................................................................................................................. 42 1.16.1, 枚举类型的使用方法..........................................................................................43 1.16.2,枚举与#define 宏的区别....................................................................................43 1.17,伟大的缝纫师----typedef 关键字................................................................................. 44 1.17.1,关于马甲的笑话.................................................................................................44 1.17.2,历史的误会----也许应该是 typerename........................................................... 44 1.17.3,typedef 与#define 的区别...................................................................................45 1.17.4,#define a int[10]与 typedef int a[10];.............................................................. 46 第二章 符号..................................................................................................................................... 49 2.1,注释符号..........................................................................................................................50 2.1.1,几个似非而是的注释问题...................................................................................50 2.1.2,y = x/*p................................................................................................................. 51 2.1.3,怎样才能写出出色的注释...................................................................................51 2.1.3.1,安息吧,路德维希.凡.贝多芬................................................................. 51 2.1.3.2,windows 大师们用注释讨论天气问题....................................................51 2.1.3.3,出色注释的基本要求............................................................................... 52 2.2,接续符和转义符..............................................................................................................53 2.3,单引号、双引号..............................................................................................................54 2.4,逻辑运算符......................................................................................................................54 2.5,位运算符..........................................................................................................................55 2.5.1,左移和右移...........................................................................................................55 2.5.2,0x01<<2+3 的值为多少?...................................................................................55 2.6,花括号.............................................................................................................................. 56 2.7,++、--操作符...................................................................................................................56 2.7.1,++i+++i+++i......................................................................................................... 57 2.7.2,贪心法...................................................................................................................57 2.8,2/(-2)的值是多少?.........................................................................................................58 2.9,运算符的优先级..............................................................................................................58 2.9.1, 运算符的优先级表................................................................................................58 2.9.2,一些容易出错的优先级问题.............................................................................. 60 第三章 预处理................................................................................................................................. 61 3.1,宏定义.............................................................................................................................. 62 3.1.1,数值宏常量...........................................................................................................62 3.1.2,字符串宏常量.......................................................................................................62 3.1.3,用 define 宏定义注释符号?.............................................................................. 63 3.1.4,用 define 宏定义表达式.......................................................................................63 3.1.5,宏定义中的空格...................................................................................................64 3.1.6,#undef....................................................................................................................64 3.2,条件编译..........................................................................................................................65 3.3,文件包含..........................................................................................................................66 3.4,#error 预处理................................................................................................................... 66 3.5,#line 预处理.....................................................................................................................67 3.6,#pragma 预处理...............................................................................................................67 3.6.8,#pragma pack........................................................................................................ 69 3.6.8.1,为什么会有内存对齐?........................................................................... 70 3.6.8.2,如何避免内存对齐的影响....................................................................... 70 3.7, #运算符.............................................................................................................................. 72 3.8,##预算符..........................................................................................................................72 第四章 指针和数组.........................................................................................................................74 4.1,指针.................................................................................................................................. 74 4.1.1,指针的内存布局...................................................................................................74 4.1.2,“*”与防盗门的钥匙............................................................................................. 75 4.1.3,int *p = NULL 和*p = NULL 有什么区别?.................................................... 75 4.1.4,如何将数值存储到指定的内存地址.................................................................. 76 4.1.5,编译器的 bug?....................................................................................................77 4.1.6,如何达到手中无剑、胸中也无剑的地步.......................................................... 78 4.2,数组.................................................................................................................................. 78 4.2.1,数组的内存布局...................................................................................................78 4.2.3,数组名 a 作为左值和右值的区别.......................................................................79 4.3,指针与数组之间的恩恩怨怨..........................................................................................80 4.3.1,以指针的形式访问和以下标的形式访问.......................................................... 80 4.3.1.1,以指针的形式访问和以下标的形式访问指针....................................... 81 4.3.1.2,以指针的形式访问和以下标的形式访问数组....................................... 81 4.3.2,a 和&a 的区别...................................................................................................... 81 4.3.3,指针和数组的定义与声明...................................................................................83 4.3.3.1,定义为数组,声明为指针....................................................................... 83 4.3.3.2,定义为指针,声明为数组....................................................................... 85 4.3.4,指针和数组的对比...............................................................................................85 4.4,指针数组和数组指针......................................................................................................86 4.4.1,指针数组和数组指针的内存布局...................................................................... 86 4.4.3,再论 a 和&a 之间的区别.....................................................................................87 4.4.4,地址的强制转换...................................................................................................88 4.5,多维数组与多级指针......................................................................................................90 4.5.1,二维数组...............................................................................................................91 4.5.1.1,假想中的二维数组布局........................................................................... 91 4.5.1.2,内存与尺子的对比....................................................................................91 4.5.1.3,&p[4][2] - &a[4][2]的值为多少?........................................................... 92 4.5.2,二级指针...............................................................................................................93 4.5.2.1,二级指针的内存布局............................................................................... 93 4.6,数组参数与指针参数......................................................................................................94 4.6.1,一维数组参数.......................................................................................................94 4.6.1.1,能否向函数传递一个数组?................................................................... 94 4.6.1.2,无法向函数传递一个数组....................................................................... 96 4.6.2,一级指针参数.......................................................................................................97 4.6.2.1,能否把指针变量本身传递给一个函数................................................... 97 4.6.2.2,无法把指针变量本身传递给一个函数................................................... 98 4.6.3,二维数组参数与二维指针参数.......................................................................... 99 4.7,函数指针........................................................................................................................100 4.7.1,函数指针的定义.................................................................................................100 4.7.2,函数指针的使用.................................................................................................101 4.7.2.1,函数指针使用的例子............................................................................. 101 4.2.7.2,*(int*)&p ----这是什么?....................................................................... 102 4.7.3,(*(void(*) ())0)()------这是什么?..................................................................... 102 4.7.4,函数指针数组.....................................................................................................103 4.7.5,函数指针数组的指针.........................................................................................104 第五章 内存管理...........................................................................................................................107 5.1,什么是野指针................................................................................................................107 5.2,栈、堆和静态区............................................................................................................107 5.3,常见的内存错误及对策................................................................................................108 5.3.1,指针没有指向一块合法的内存........................................................................ 108 5.3.1.1,结构体成员指针未初始化..................................................................... 108 5.3.1.2,没有为结构体指针分配足够的内存..................................................... 109 5.3.1.3,函数的入口校验......................................................................................109 5.3.2,为指针分配的内存太小.....................................................................................110 5.3.3,内存分配成功,但并未初始化.........................................................................110 5.3.4,内存越界............................................................................................................. 111 5.3.5,内存泄漏............................................................................................................. 111 5.3.5.1,告老还乡求良田......................................................................................112 5.3.5.2,如何使用 malloc 函数.............................................................................112 5.3.5.3,用 malloc 函数申请 0 字节内存.............................................................113 5.3.5.4,内存释放..................................................................................................113 5.3.5.5,内存释放之后..........................................................................................114 5.3.6,内存已经被释放了,但是继续通过指针来使用............................................ 114 第六章 函数................................................................................................................................... 115 6.1,函数的由来与好处........................................................................................................116 6.2,编码风格........................................................................................................................ 116 6.2,函数设计的一般原则和技巧...........................................................................................121 6.4,函数递归........................................................................................................................123 6.4.1,一个简单但易出错的递归例子........................................................................ 123 6.4.2,不使用任何变量编写 strlen 函数......................................................................124 第七章 文件结构.........................................................................................................................127 7.1,文件内容的一般规则....................................................................................................127 7.2,文件名命名的规则........................................................................................................130

2018-05-21

图解TCP/IP

编辑推荐   TCP/IP圣经级教材   268张图解轻松入门   这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。   《图解TCP/IP》中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。   《图解TCP/IP》适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考书。 内容简介   《图灵程序设计丛书:图解TCP/IP(第5版)》是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能。   书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。   《图灵程序设计丛书:图解TCP/IP(第5版)》适合计算机网络的开发、管理人员阅读,也可作为大专院校相关专业的教学参考书。 绝对完整!高清!可以放心下载!

2018-05-21

空空如也

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

TA关注的人

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