• 嵌入式Linux与物联网软件开发
21年品牌 40万+商家 超1.5亿件商品

嵌入式Linux与物联网软件开发

全新正版 极速发货

35.73 6.1折 59 全新

库存8件

广东广州
认证卖家担保交易快速发货售后保障

作者朱有鹏 张先凤

出版社人民邮电出版社

ISBN9787115432940

出版时间2016-11

装帧其他

开本其他

定价59元

货号1201416400

上书时间2024-07-05

徐小智的书店

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
作者简介
朱有鹏
互联网课程《朱老师物联网大讲堂》创始人、杰出讲师;51CTO学院杰出讲师、CSDN技术专家、国内物联网教育领域先驱;具有大型企业级项目研发经验和丰富的教学经验。授课风趣
幽默、条理清晰、通俗易懂,对知识有自己独到见解。能举一反三,发散学生的思维,指引学生发掘适合自己的学习方法。

张先凤
《朱老师物联网大讲堂》联合创始人、杰出讲师;长期从事企业级物联网项目研发和物联网相关教学工作,对物联网各关键环节技术均有所涉猎,对物联网未来发展和教学有着独特见解,立志长期扎根物联网相关研发和教学工作。

张先凤
《朱老师物联网大讲堂》联合创始人、杰出讲师;长期从事企业级物联网项目研发和物联网相关教学工作,对物联网各关键环节技术均有所涉猎,对物联网未来发展和教学有着独特见解,立志长期扎根物联网相关研发和教学工作。

目录
目录

 章  C 语言与内存… ……………………………………………………………………… 1
1.1  引言…………………………………………………………………………………………………  1
1.2  计算机程序运行的目的……………………………………………………………………………  1
1.2.1  什么是程序… ……………………………………………………………………………………  1
1.2.2  计算机运行程序的目的…………………………………………………………………………  1
1.2.3  静态内存SRAM 和动态内存DRAM…………………………………………………………2
1.2.4  冯·诺伊曼结构和哈佛结构… ………………………………………………………………3
1.2.5  总结:程序运行为什么需要内存呢……………………………………………………………4
1.2.6  深入思考:如何管理内存(无OS 时,有OS 时)… ………………………………………4
1.3  位、字节、半字、字的概念和内存位宽…………………………………………………………  5
1.3.1  深入了解内存(硬件和逻辑两个角度)… ……………………………………………………5
1.3.2  内存的逻辑抽象图(内存的编程模型)… ……………………………………………………6
1.3.3  位和字节…………………………………………………………………………………………7
1.3.4  字和半字…………………………………………………………………………………………7
1.3.5  内存位宽(硬件和逻辑两个角度)… …………………………………………………………7
1.4  内存编址和寻址、内存对齐………………………………………………………………………  8
1.4.1  内存编址方法… …………………………………………………………………………………8
1.4.2  关键:内存编址是以字节为单位………………………………………………………………8
1.4.3  内存和数据类型的关系…………………………………………………………………………9
1.4.4  内存对齐………………………………………………………………………………………  10
1.5  C语言如何操作内存… ……………………………………………………………………………  10
1.5.1  C 语言对内存地址的封装……………………………………………………………………  10
1.5.2  用指针来间接访问内存………………………………………………………………………  11
1.5.3  指针类型的含义………………………………………………………………………………  12
1.5.4  用数组来管理内存……………………………………………………………………………  12
1.6  内存管理之结构体…………………………………………………………………………………  14
1.6.1  数据结构这门学问的意义… …………………………………………………………………  14
1.6.2  最简单的数据结构:数组…………………………………………………………………… 141.6.3 数组的优缺点…………………………………………………………………………………  14
1.6.4  结构体隆重登场………………………………………………………………………………  14
1.6.5  题外话:结构体内嵌指针实现面向对象……………………………………………………  15
1.7  内存管理之栈(stack)… ………………………………………………………………………  15
1.7.1  什么是栈… ……………………………………………………………………………………  15
1.7.2  栈管理内存的特点(小内存、自动化)… …………………………………………………  16
1.7.3  栈的应用举例:局部变量和函数调用………………………………………………………  16
1.7.4  栈的约束(预定栈大小不灵活,怕溢出)… ………………………………………………  17
1.8  内存管理之堆………………………………………………………………………………………  18
1.8.1  什么是堆… ……………………………………………………………………………………  18
1.8.2  堆管理内存的特点(大块内存、手工分配/ 使用/ 释放)…………………………………  18
1.8.3  C 语言操作堆内存的接口(malloc/free)… ………………………………………………  18
1.8.4  堆的优势和劣势(管理大块内存、灵活、容易内存泄漏)… ……………………………  19
1.8.5  静态存储区……………………………………………………………………………………  19
课后题…  …………………………………………………………………………………………………  19
第2  章 C 语言位操作… ………………………………………………………………………21
2.1  引言…………………………………………………………………………………………………  21
2.2  常用位操作符………………………………………………………………………………………  21
2.2.1  位与(&)………………………………………………………………………………………  21
2.2.2  位或(|)… ……………………………………………………………………………………  22
2.2.3  位取反(~)……………………………………………………………………………………  23
2.2.4  位异或(^)……………………………………………………………………………………  24
2.2.5  左移位(<<)…………………………………………………………………………………  25
2.2.6  右移位(>>)…………………………………………………………………………………  26
2.3  位操作与寄存器……………………………………………………………………………………  26
2.3.1  寄存器的操作…………………………………………………………………………………  26
2.3.2  寄存器特定位清零用&………………………………………………………………………  27
2.3.3  寄存器特定位置1 用|… ……………………………………………………………………  27
2.3.4  寄存器特定位取反用~………………………………………………………………………  27
2.4  位运算构建特定二进制数…………………………………………………………………………  28
2.4.1  使用移位获取特定位为1 的二进制数………………………………………………………  28
2.4.2  结合位取反获取特定位为0 的二进制数……………………………………………………  29
2.4.3  总结……………………………………………………………………………………………  29
2.5  位运算实战演练1… ………………………………………………………………………………  30
2.5.1  给定整型数a,设置a 的bit3,保证其他位不变…………………………………………  30
2.5.2  给定整型数a,设置a 的bit3~bit7,保持其他位不变… ………………………………  30
2.5.3  给定整型数a,清除a 的bit15,保证其他位不变… …………………………………… 302.5.4 给定整型数a,清除a 的bit15~bit23,保持其他位不变… ……………………………  31
2.5.5  给定整型数a,取出a 的bit3~bit8… ……………………………………………………  31
2.5.6  用C 语言给寄存器a 的bit7~bit17 赋值937(其余位不受影响)………………………  31
2.6  位运算实战演练2… ………………………………………………………………………………  32
2.6.1  用C 语言将寄存器a 的bit7~bit17 中的值加17(其余位不受影响)……………………  32
2.6.2  用C 语言给寄存器a 的bit7~bit17 赋值937,同时给bit21~bit25 赋值17… ………  32
2.7  技术升级:用宏定义来完成位运算………………………………………………………………  33
2.7.1  直接用宏来置位………………………………………………………………………………  33
2.7.2  直接用宏来复位………………………………………………………………………………  33
2.7.3  截取变量的部分连续位………………………………………………………………………  33
课后题…  …………………………………………………………………………………………………  34
第3  章 指针才是C 语言的精髓… …………………………………………………………  36
3.1  引言…………………………………………………………………………………………………  36
3.2  指针到底是什么……………………………………………………………………………………  37
3.2.1  普通变量………………………………………………………………………………………  37
3.2.2  指针变量………………………………………………………………………………………  37
3.2.3  变量空间的首字节地址,作为整个空间的地址……………………………………………  38
3.2.4  指针变量的类型作用…………………………………………………………………………  38
3.2.5  为什么需要指针………………………………………………………………………………  39
3.2.6  不错语言如Java、C# 的指针到哪里去了… ……………………………………………  39
3.2.7  指针使用之三部曲……………………………………………………………………………  40
3.3  理解指针符号………………………………………………………………………………………  40
3.3.1  星号* 的理解…………………………………………………………………………………  40
3.3.2  取地址符& 的理解… ………………………………………………………………………  41
3.3.3  指针变量的初始化和指针变量赋值之间的区别……………………………………………  41
3.3.4  左值与右值……………………………………………………………………………………  41
3.3.5  定义指针后,需要关心的一些内容…………………………………………………………  42
3.4  野指针与段错误问题………………………………………………………………………………  43
3.4.1  什么是野指针…………………………………………………………………………………  43
3.4.2  野指针可能引发的危害………………………………………………………………………  44
3.4.3  野指针产生的原因……………………………………………………………………………  44
3.4.4  如何避免野指针………………………………………………………………………………  45
3.4.5  NULL 到底是什么……………………………………………………………………………  45
3.4.6  段错误产生的原因汇总………………………………………………………………………  46
3.5  const关键字与指针… ……………………………………………………………………………  46
3.5.1  什么是const… ………………………………………………………………………………  46
3.5.2  const 对于普通变量的修饰………………………………………………………………… 463.5.3 const 修饰指针的三种形式…………………………………………………………………  46
3.5.4  const 的变量真的不能改吗…………………………………………………………………  47
3.5.5  为什么要用const……………………………………………………………………………  48
3.5.6  有关变量和常量的探讨………………………………………………………………………  48
3.6  深入学习数组………………………………………………………………………………………  49
3.6.1  为什么需要数组………………………………………………………………………………  49
3.6.2  从编译器角度理解数组………………………………………………………………………  49
3.6.3  从内存角度理解数组…………………………………………………………………………  49
3.6.4  一位数组中几个关键符号的理解……………………………………………………………  50
3.7  指针与数组的天生“姻缘”………………………………………………………………………  50
3.7.1  如何使用指针访问数组………………………………………………………………………  50
3.7.2  从内存角度理解指针访问数组的实质………………………………………………………  51
3.7.3  指针与数组类型的匹配问题…………………………………………………………………  51
3.7.4  总结:指针类型决定了指针如何参与运算…………………………………………………  51
3.8  指针类型与强制类型转换…………………………………………………………………………  52
3.8.1  变量数据类型的作用…………………………………………………………………………  52
3.8.2  数据的存入和读取……………………………………………………………………………  53
3.8.3  普通变量的强制转换…………………………………………………………………………  53
3.8.4  指针变量数据类型的含义……………………………………………………………………  56
3.8.5  指针变量数据类型的强制转换………………………………………………………………  56
3.9  指针、数组与sizeof运算符… ……………………………………………………………………  57
3.9.1  char str[]="hello"; sizeof(str) ,sizeof(str[0]) ,strlen(str)…………………………  58
3.9.2  char str[]="hello"; char *p=str; sizeof(*p) ……………………………………………  58
3.9.3  int b[100]; sizeof(b)… ……………………………………………………………………  58
3.9.4  数组的传参……………………………………………………………………………………  58
3.9.5  #define 和typedef 的区别…………………………………………………………………  59
3.10  指针与函数传参… ………………………………………………………………………………  60
3.10.1  普通传参… …………………………………………………………………………………  60
3.10.2  传递地址(指针)……………………………………………………………………………  61
3.10.3  传递数组… …………………………………………………………………………………  61
3.10.4  传递结构体… ………………………………………………………………………………  61
3.10.5  传递普通值和传递地址的异同,以及传递地址(指针)应该遵循的原则… …………  62
3.11  输入型参数与输出型参数… ……………………………………………………………………  62
3.11.1  函数为什么需要传参和返回值… …………………………………………………………  62
3.11.2  函数传参中为什么使用const 指针… ……………………………………………………  64
3.11.3  总结… ………………………………………………………………………………………  65
课后题…  ………………………………………………………………………………………………… 65第4 章 C 语言复杂表达式与指针不错应用………………………………………………  67
4.1 &

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP