《指针的艺术》主要探讨C语言指针的基本概念及其与变量、数组、结构体和文件之间的应用,同时剖析C++、C++/CLR、Java、Visual C#及Visual Basic中的引用(Reference),并分别以指针和引用(Reference)实现链表、堆栈与队列。 全书共七篇。针对以下14个主题,分别在C、C++、C++/CLR、Java、Visual C#及Visual Basic程序语言中比较其用法:变量的定义、算术运算符、关系运算符、逻辑运算符、输出函数、输入函数、选择结构、循环结构、数组、函数调用、指针与引用(Referenee)、指向或引用(Reference)到空的表示法、动态分配内存、回收内存。 《指针的艺术》适合C、C++、C++/CLR、Java、Visual C#及Visual Basic程序设计人员使用,希望通过《指针的艺术》的内容,能够帮助读者透彻理解指针的概念并在实践中能够灵活运用。书中所有范例代码均可在配书光盘中找到。 第一篇 C程序语言篇 1 第1章 内存的基本概念 3 1-1 变量 4 1-2 一维数组 5 1-3 二维数组 9 1-4 结构体 11 1-5 问题演练 13 第2章 指针与变量 15 2-1 一颗星星:表示一把钥匙 16 2-2 两颗星星:表示两把钥匙 19 2-3 三颗星星:表示三把钥匙 21 2-4 问题演练 23 第3章 指针与数组 25 3-1 指针与一维数组 26 3-2 指针与二维数组 32 3-3 数组指针 35 3-4 为什么parr等同于*parr 36 3-5 指向数组的指针 38 3-6 多重指针 44 3-7 命令行自变量 51 3-8 调试题 54 3-9 问题演练 55 3-10 程序实战 62 第4章 指针与函数 63 4-1 函数初探 64 4-2 两数对调 64 4-3 再论传址调用 66 4-3-1 寻找数组中的最大值 66 4-3-2 一维数组的元素求和 67 4-3-3 二维数组的元素求和 69 4-4 指向函数的指针 70 4-5 返回指针的函数 72 4-6 调试题 74 4-7 问题演练 77 4-8 程序实战 77 第5章 指针与字符串 79 5-1 字符串指针 80 5-2 常用的库函数 83 5-2-1 计算字符串的长度 83 5-2-2 字符串的复制 84 5-2-3 字符串的连接 87 5-2-4 字符串的比较 88 5-3 调试题 93 5-4 程序实战 94 第6章 指针与结构体 95 6-1 指向结构体变量的指针 96 6-2 结构体指针与自增运算符 100 6-3 结构体与函数 102 6-4 自引用 105 6-5 调试题 111 6-6 问题演练 119 第7章 链表——以C程序实现 121 7-1 单向链表 122 7-2 双向链表 126 7-3 链表的应用——堆栈的实现 130 7-4 链表的应用——队列的实现 134 7-5 程序实战 138 第8章 指针与文件 139 8-1 fprintf与fscanf函数 140 8-2 fwrite与fread函数 143 8-3 当前文件的指针指向何处 145 8-4 龟etpos与fsetpos函数 147 8-5 rewind 149 8-6 程序实战 150 第二篇 C++程序语言篇 151 第9章 简易Visual C++2008使用手册 153 第10章 C++的reference 157 10-1 变量与reference 158 10-2 两数对调 159 10-2-1 传值调用 159 10-2-2 引用调用(call by reference) 160 10-3 结构体与reference 163 10-4 类与reference 166 10-5 问题演练 171 10-6 程序实战 172 第11章 C++的this指针 173 11-1 this指针 174 11-2 股票买卖范例程序 177 11-3 程序实战 180 第12章 C++的new与delete 181 12-1 new、delete与变量 182 12-2 new、delete与数组 184 12-3 new、delete与结构体 186 12-4 new、delete与类 187 12-5 程序实战 190 第13章 C++的复制构造函数 191 13-1 复制构造函数 192 13-2 重载赋值运算符 196 13-3 程序实战 200 第14章 虚函数、指针与reference 201 14-1 虚函数 202 14-2 程序实战 205 第15章 链表——以C++程序实现 207 15-1 单向链表 208 15-2 双向链表 213 15-3 堆栈 218 15-4 程序实战 220 第三篇 C++/CLR程序语言篇 221 第16章 简易Visual C++/CLR使用手册 223 第17章 浅谈C++/CLR程序设计 227 17-1 可跟踪的reference 228 17-2 可跟踪的handle 228 17-3 数组 229 17-3-1 一维数组 229 17-3-2 二维数组 231 17-3-3 不规则数组 232 17-4 Interior指针 233 17-5 函数: 233 17-5-1 两数对调 233 17-5-2 找出数组的最大值 236 17-5-3 计算数组的总和 237 17-5-4 计算二维数组的总和 238 17-5-5 计算不规则数组的总和 239 17-6 程序实战 240 第18章 链表——以Visual C++/CLR实现 241 18-1 以单向链表处理数据 242 18-2 以双向链表处理数据 245 18-3 使用链表实现堆栈 248 18-4 程序实战 250 第四篇 Java程序语言篇 251 第19章 简易JCreator使用手册 253 19-1 安装JCreator编译程序 254 19-2 编写、编译与运行程序 256 19-3 程序的调试(debug) 257 19-4 创建项目文件 258 第20章 变量、字符串与refererice 259 20-1 变量与引用(reference) 260 20-2 字符串与引用(reference) 261 20-3常用的字符串库函数 264 20-4 程序实战 267 第21章 数组与reference 269 21-1 数组初探 270 21-2 数组的复制 275 21-3 如何传送数组 278 21-4 二维数组 283 21-5 程序实战 286 第22章 类与reference 287 22-1 类与引用(reference) 288 22-2 复制构造函数 291 22-3 this指针 297 22-4 程序实战 298 第23章 链表——以Java程序实现 299 23-1 单向链表 300 23-2 双向链表 304 23-3 堆栈的操作 310 23-4 程序实战 314 第五篇 Visual C# 2008程序语言篇 315 第24章 简易Visual C#使用手册 317 第25章 变量与reference 321 25-1 传值调用 322 25-2 引用调用(call by reference) 323 25-3 特殊的参数out 324 25-4 程序实战 326 第26章 数组与reference 327 26-1 找出一维数组的最大值 328 26-2 一维数组的求和 329 26-3 二维数组的求和 330 26-4 不规则数组的求和 331 26-5 程序实战 332 第27章 链表——以Visual C#实现 333 27-1 数据的转换 334 27-2 单向链表 334 27-3 双向链表 338 27-4 链表的应用——堆栈的实现 342 27-5 程序实战 346 第六篇 Visual Basic 2008程序语言篇 347 第28章 简易Visual Basic使用手册 349 第29章 函数与reference 353 29-1 传值调用(call by value) 354 29-2 引用调用(call by reference) 354 29-3 程序实战 355 第30章 数组与reference 357 30-1 找出数组的最大值 358 30-2 数组的求和 360 30-2-1 一维数组的求和 360 30-2-2 二维数组的求和 361 30-3 不规则数组 362 30-4 程序实战 364 第31章 链表——以Visual Basic实现 365 31-1 链表的基本概念 366 31-2 单向链表 368 31-3 双向链表 372 31-4 链表的应用——堆栈的实现 376 31-5 程序实战 380 第七篇 比较篇 381 附录A 解答 393
2021-12-27 13:14:45 43.81MB 指针 C C++ C#
1
C语言 指针PPT,比较详细,可以参考学习,不用担心指针学习方面,忘记的时候可以拿出来看一下。比较实用,拿出来与大家分享一下。
2021-12-27 08:44:23 1.78MB Cyuyan zhizhen
1
输入一个字符串,统计各字母出现的次数,并按字母出现的多少输出(先输出字母出现多的,次 数相同的按字母表顺序输出,不出现的字母不输出)。 例:输入:5b3a+4-hdeh5dh? 输出: h 3 d 2 a 1 b 1 e 1 (需要c语言实验指导书其他答案的d我) #include int main() { char a[]="bbbhj+uhhhaaa",b[]="abcdefghijklmnopqrstuvwxyz",m; int c[26]={0},i,j,t=0; for(i=0;i<26;i++) for(j=0;a[j]!='\0';j++) { if(b[i]==a[j]) c[i]=c[i]+1; } for(i=0;i<26;i++) for(j=0;j<26-i-1;j++) { if(c[j]
2021-12-26 09:01:53 223KB c语言
1
指针常量、常量指针、常量指针常量、指针变量
2021-12-24 18:02:41 4KB C_Pointer
1
使用python向C语言的链接库传递数组、结构体、指针类型的数据 由于最近的项目频繁使用python调用同事的C语言代码,在调用过程中踩了很多坑,一点一点写出来供大家参考,我们仍然是使用ctypes来调用C语言的代码库。 至于如何调用基础数据类型的数据,请大家参考我的另外一篇文章:Python使用ctypes调用C/C++的方法 1. 使用python给C语言函数传递数组类型的参数 想必很多时候,C语言会使用数组作为参数,在之前我们使用过ctypes的一些数据类型作为C语言参数类型,包括byte、short、int、double之类的,但是在使用数组类型的时候,我们也是有着类似的做法,下面我们
2021-12-22 20:39:41 64KB c语言 c语言指针 input
1
有相应的例子,用图片说明,阐述了编程概念,简单易懂
2021-12-20 15:30:16 52KB c指针
1
c代码-9、有5个字符串,首先将它们按照字符串中的字符个数由小到大排列, 再分别取出每个字符串的第三个字母合并成一个新的字符串输出(若少于三个字符的输出空格)。要求:利用字符串指针和指针数组实现。
2021-12-19 15:54:05 1KB 代码
1
帮助理解指针
2021-12-19 15:39:51 66KB 指针
1
整理的一些关于C语言的练习题,题目答案都有,需要的可以下载看一下
2021-12-19 12:55:52 34KB C语言 练习题 指针 链表
1
版权信息   书 名: C和指针   作 者:(美)(KennethA.Reek)   出版社: 人民邮电出版社   出版时间: 2008   ISBN: 9787115172013   开本: 16   定价: 65.00 元 内容简介   《C和指针》提供与C语言编程相关的全面资源和深入讨论。《C和指针》通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的C编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。 目录   第1章 快速上手    1.1 简介    1.1.1 空白和注释    1.1.2 预处理指令    1.1.3 main函数    1.1.4 read_column_numbers函数    1.1.5 rearrange函数    1.2 补充说明    1.3 编译    1.4 总结    1.5 警告的总结    1.6 编程提示的总结    1.7 问题    1.8 编程练习    第2章 基本概念    2.1 环境    2.1.1 翻译    2.1.2 执行    2.2 词法规则    2.2.1 字符    2.2.2 注释    2.2.3 自由形式的源代码    2.2.4 标识符    2.2.5 程序的形式    2.3 程序风格    2.4 总结    2.5 警告的总结    2.6 编程提示的总结    2.7 问题    2.8 编程练习    第3章 数据    3.1 基本数据类型    3.1.1 整型家族    3.1.2 浮点类型    3.1.3 指针    3.2 基本声明    3.2.1 初始化    3.2.2 声明简单数组    3.2.3 声明指针    3.2.4 隐式声明    3.3 typedef    3.4 常量    3.5 作用域    3.5.1 代码块作用域    3.5.2 文件作用域    3.5.3 原型作用域    3.5.4 函数作用域    3.6 链接属性    3.7 存储类型    3.8 static关键字    3.9 作用域、存储类型示例    3.10 总结    3.11 警告的总结    3.12 编程提示的总结    3.13 问题    第4章 语句    4.1 空语句    4.2 表达式语句    4.3 代码块    4.4 if语句    4.5 while语句    4.5.1 break和continue语句    4.5.2 while语句的执行过程    4.6 for语句    4.7 do语句    4.8 switch语句    4.8.1 switch中的break语句    4.8.2 default子句    4.8.3 switch语句的执行过程    4.9 goto语句    4.10 总结    4.11 警告的总结    4.12 编程提示的总结    4.13 问题    4.14 编程练习    第5章 操作符和表达式    5.1 操作符    5.1.1 算术操作符    5.1.2 移位操作符    5.1.3 位操作符    5.1.4 赋值    5.1.5 单目操作符    5.1.6 关系操作符    5.1.7 逻辑操作符    5.1.8 条件操作符    5.1.9 逗号操作符    5.1.10 下标引用、函数调用和结构成员    5.2 布尔值    5.3 左值和右值    5.4 表达式求值    5.4.1 隐式类型转换    5.4.2 算术转换    5.4.3 操作符的属性    5.4.4 优先级和求值的顺序    5.5 总结    5.6 警告的总结    5.7 编程提示的总结    5.8 问题    5.9 编程练习    第6章 指针    6.1 内存和地址    6.2 值和类型    6.3 指针变量的内容    6.4 间接访问操作符    6.5 未初始化和非法的指针    6.6 NULL指针    6.7 指针、间接访问和左值    6.8 指针、间接访问和变量    6.9 指针常量    6.10 指针的指针    6.11 指针表达式    6.12 实例    6.13 指针运算    6.13.1 算术运算    6.13.2 关系运算    6.14 总结    6.15 警告的总结    6.16 编程提示的总结    6.17 问题    6.18 编程练习    第7章 函数    7.1 函数定义    7.2 函数声明    7.2.1 原型    7.2.2 函数的缺省认定    7.3 函数的参数    7.4 ADT和黑盒    7.5 递归    7.5.1 追踪递归函数    7.5.2 递归与迭代    7.6 可变参数列表    7.6.1 stdarg宏    7.6.2 可变参数的限制    7.7 总结    7.8 警告的总结    7.9 编程提示的总结    7.10 问题    7.11 编程练习    第8章 数组    8.1 一维数组    8.1.1 数组名    8.1.2 下标引用    8.1.3 指针与下标    8.1.4 指针的效率    8.1.5 数组和指针    8.1.6 作为函数参数的数组名    8.1.7 声明数组参数    8.1.8 初始化    8.1.9 不完整的初始化    8.1.10 自动计算数组长度    8.1.11 字符数组的初始化    8.2 多维数组    8.2.1 存储顺序    8.2.2 数组名    8.2.3 下标    8.2.4 指向数组的指针    8.2.5 作为函数参数的多维数组    8.2.6 初始化    8.2.7 数组长度自动计算    8.3 指针数组    8.4 总结    8.5 警告的总结    8.6 编程提示的总结    8.7 问题    8.8 编程练习    第9章 字符串、字符和字节    9.1 字符串基础    9.2 字符串长度    9.3 不受限制的字符串函数    9.3.1 复制字符串    9.3.2 连接字符串    9.3.3 函数的返回值    9.3.4 字符串比较    9.4 长度受限的字符串函数    9.5 字符串查找基础    9.5.1 查找一个字符    9.5.2 查找任何几个字符    9.5.3 查找一个子串    9.6 高级字符串查找    9.6.1 查找一个字符串前缀    9.6.2 查找标记    9.7 错误信息    9.8 字符操作    9.8.1 字符分类    9.8.2 字符转换    9.9 内存操作    9.10 总结    9.11 警告的总结    9.12 编程提示的总结    9.13 问题    9.14 编程练习    第10章 结构和联合    10.1 结构基础知识    10.1.1 结构声明    10.1.2 结构成员    10.1.3 结构成员的直接访问    10.1.4 结构成员的间接访问    10.1.5 结构的自引用    10.1.6 不完整的声明    10.1.7 结构的初始化    10.2 结构、指针和成员    10.2.1 访问指针    10.2.2 访问结构    10.2.3 访问结构成员    10.2.4 访问嵌套的结构    10.2.5 访问指针成员    10.3 结构的存储分配    10.4 作为函数参数的结构    10.5 位段    10.6 联合    10.6.1 变体记录    10.6.2 联合的初始化    10.7 总结    10.8 警告的总结    10.9 编程提示的总结    10.10 问题    10.11 编程练习    第11章 动态内存分配    11.1 为什么使用动态内存分配    11.2 malloc和free    11.3 calloc和realloc    11.4 使用动态分配的内存    11.5 常见的动态内存错误    11.6 内存分配实例    11.7 总结    11.8 警告的总结    11.9 编程提示的总结    11.10 问题    11.11 编程练习    第12章 使用结构和指针    12.1 链表    12.2 单链表    12.2.1 在单链表中插入    12.2.2 其他链表操作    12.3 双链表    12.3.1 在双链表中插入    12.3.2 其他链表操作    12.4 总结    12.5 警告的总结    12.6 编程提示的总结    12.7 问题    12.8 编程练习    第13章 高级指针话题    13.1 进一步探讨指向指针的指针    13.2 高级声明    13.3 函数指针    13.3.1 回调函数    13.3.2 转移表    13.4 命令行参数    13.4.1 传递命令行参数    13.4.2 处理命令行参数    13.5 字符串常量    13.6 总结    13.7 警告的总结    13.8 编程提示的总结    13.9 问题    13.10 编程练习    第14章 预处理器    14.1 预定义符号    14.2 #define    14.2.1 宏    14.2.2 #define替换    14.2.3 宏与函数    14.2.4 带副作用的宏参数    14.2.5 命名约定    14.2.6 #undef    14.2.7 命令行定义    14.3 条件编译    14.3.1 是否被定义    14.3.2 嵌套指令    14.4 文件包含    14.4.1 函数库文件包含    14.4.2 本地文件包含    14.4.3 嵌套文件包含    14.5 其他指令    14.6 总结    14.7 警告的总结    14.8 编程提示的总结    14.9 问题    14.10 编程练习    第15章 输入/输出函数    15.1 错误报告    15.2 终止执行    15.3 标准I/O函数库    15.4 ANSI I/O概念    15.4.1 流    15.4.2 文件    15.4.3 标准I/O常量    15.5 流I/O总览    15.6 打开流    15.7 关闭流    15.8 字符I/O    15.8.1 字符I/O宏    15.8.2 撤销字符I/O    15.9 未格式化的行I/O    15.10 格式化的行I/O    15.10.1 scanf家族    15.10.2 scanf格式代码    15.10.3 printf家族    15.10.4 printf格式代码    15.11 二进制I/O    15.12 刷新和定位函数    15.13 改变缓冲方式    15.14 流错误函数    15.15 临时文件    15.16 文件操纵函数    15.17 总结    15.18 警告的总结    15.19 编程提示的总结    15.20 问题    15.21 编程练习    第16章 标准函数库    16.1 整型函数    16.1.1 算术   16.1.2 随机数    16.1.3 字符串转换   16.2 浮点型函数    16.2.1 三角函数   16.2.2 双曲函数   16.2.3 对数和指数函数   16.2.4 浮点表示形式   16.2.5 幂   16.2.6 底数、顶数、绝对值和余数   16.2.7 字符串转换   16.3 日期和时间函数    16.3.1 处理器时间   16.3.2 当天时间   16.4 非本地跳转   16.4.1 实例    16.4.2 何时使用非本地跳转    16.5 信号    16.5.1 信号名   16.5.2 处理信号   16.5.3 信号处理函数    16.6 打印可变参数列表   16.7 执行环境    16.7.1 终止执行   16.7.2 断言    16.7.3 环境   16.7.4 执行系统命令   16.7.5 排序和查找    16.8 locale    16.8.1 数值和货币格式   16.8.2 字符串和locale   16.8.3 改变locale的效果    16.9 总结    16.10 警告的总结    16.11 编程提示的总结    16.12 问题    16.13 编程练习    第17章 经典抽象数据类型    17.1 内存分配    17.2 堆栈    17.2.1 堆栈接口    17.2.2 实现堆栈    17.3 队列    17.3.1 队列接口    17.3.2 实现队列    17.4 树    17.4.1 在二叉搜索树中插入    17.4.2 从二叉搜索树删除节点    17.4.3 在二叉搜索树中查找    17.4.4 树的遍历    17.4.5 二叉搜索树接口    17.4.6 实现二叉搜索树    17.5 实现的改进    17.5.1 拥有超过一个的堆栈    17.5.2 拥有超过一种的类型    17.5.3 名字冲突    17.5.4 标准函数库的ADT    17.6 总结    17.7 警告的总结    17.8 编程提示的总结    17.9 问题    17.10 编程练习    第18章 运行时环境    18.1 判断运行时环境    18.1.1 测试程序    18.1.2 静态变量和初始化    18.1.3 堆栈帧    18.1.4 寄存器变量    18.1.5 外部标识符的长度    18.1.6 判断堆栈帧布局    18.1.7 表达式的副作用    18.2 C和汇编语言的接口    18.3 运行时效率    18.4 总结    18.5 警告的总结    18.6 编程提示的总结    18.7 问题    18.8 编程练习    附录 部分问题答案    索引
2021-12-17 17:37:18 11.06MB C和指针 清晰版 PDF C语言
1