《指针的编程艺术(第二版)》一3.3 数组指针
本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第3章,第3.3节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看
指针的编程艺术(第二版)
数组指针(pointers of array){XE "陣列指標(pointers of array)" y "ㄓㄣˋㄌㄧㄝˋㄓˇㄅㄧㄠ"}表示数组的元素,都是指向某个数据类型的指针,如
char *parr[4] = {“Department”, “of”, “Information”, “Management”};
由于[ ]运算符的优先级高于*运算符,因此,parr是4个元素组成的数组,数组中的每个元素都是指向char数据类型的指针。如果将上述的定义用图形来表示的话,则可以很快得到答案。
![b8c8f7be52c11ad9d3ed93d2b84823c51528f58a](https://yqfile.alicdn.com/b8c8f7be52c11ad9d3ed93d2b84823c51528f58a.png)
这条语句的数组名为parr,表示第一个元素parr[0] 的地址,而且是一个指针常量,所以*parr是parr[0],而parr[0]是“Department”字符串中D字符的地址。
parr可视为二维数组(因为指针(*)和数组([])是互通的),我们可以使用下列3种方法:
1.两个,如*parr;
2.一个,搭配一个[ ],如parr[0];
3.两个[ ],如parr0。
来输出Department字符串中的D字符。除了上述3种方法外,其余的表示法将得到地址。请参阅范例pointerOfArray-5。
范例pointerOfArray-5
/* pointerOfArray-5.c */ #include stdio.h #include stdlib.h int main() char *parr[] = {"Department", "of", "Information", "Management"}; printf("*parr[3] = %c\n", *parr[3]); printf("**(parr+3) = %c\n", **(parr+3)); printf("parr[3][0] = %c\n", parr[3][0]); printf("parr[2] = %s\n", parr[2]); printf("*(parr+2) = %s\n", *(parr+2)); system("PAUSE"); return 0;
输出结果
![543296c1460fe679f7ad70a7f2fb5005434fbfe7](https://yqfile.alicdn.com/543296c1460fe679f7ad70a7f2fb5005434fbfe7.png)
从程序可知,要输出某个字符串的字符,可以使用parr[3]、(parr+3)、parr3 这3种方法,并以%c作为其格式(因为parr的每个元素都是指向char的指针),而输出字符串只需要知道字符串的第一个字符的地址就可以,并以%s格式输出,如parr[2]和(parr+2)都是指向某一个字符的地址。
继续上面的例子,如果想输出某字符串中的子字符串,如“Department”字符串中的“ment”,则可使用下列语句之一来输出:
1.printf(“%s”, parr[0]+6);
2.printf(“%s”, *parr+6);
异步社区 异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
相关文章
- 异步编程
- Windows PE导出表编程3(暴力覆盖导出函数)
- 【Java编程】建立一个简单的JDBC连接-Drivers, Connection, Statement and PreparedStatement
- 【MATLAB教程案例18】各种仿生优化算法的相似性分析以及MATLAB编程实现技巧
- C++11 并发编程指南——前言
- Javascript模块化编程系列一: 模块化的驱动
- 37 Java基础 总结 完结篇 知识串讲 Java语言初识 基础语法 流程控制 方法 数组 面向对象 内部类 异常 常用类 集合框架 IO流 多线程 网络编程 GUI 注解
- 《Haskell函数式编程入门》—— 第1章,第1.6节本章小结
- 《指针的编程艺术(第二版)》一第三章 指针与数组3.1 指针与一维数组
- 《指针的编程艺术(第二版)》一3.5 指向数组的指针
- Chrome Console 编程小技巧之 05 表格显示数组数据 console.table(array)
- 剑指offer编程题解法汇总56-数组中只出现一次的两个数字
- 剑指offer编程题解法汇总40-数组中只出现一次的两个数字
- 剑指offer编程题解法汇总13-调整数组顺序使奇数位于偶数前面
- 剑指offer编程题解法汇总6-旋转数组中的最小数字
- 《从问题到程序:用Python学编程和计算》——2.2 数据对象、计算和类型
- 《CUDA C编程权威指南》——2.6 习题
- 编程技巧 - malloc()与free() ------ malloc申请二位数组方法
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---36
- msp430项目编程17