zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《指针的编程艺术(第二版)》一3.3 数组指针

编程数组 指针 第二 艺术 3.3
2023-09-11 14:17:35 时间

本节书摘来自异步社区《指针的编程艺术(第二版)》一书中的第3章,第3.3节,作者 蔡明志,更多章节内容可以访问云栖社区“异步社区”公众号查看

3.3 数组指针

指针的编程艺术(第二版)
数组指针(pointers of array){XE "陣列指標(pointers of array)" y "ㄓㄣˋㄌㄧㄝˋㄓˇㄅㄧㄠ"}表示数组的元素,都是指向某个数据类型的指针,如

char *parr[4] = {“Department”, “of”, “Information”, “Management”};

由于[ ]运算符的优先级高于*运算符,因此,parr是4个元素组成的数组,数组中的每个元素都是指向char数据类型的指针。如果将上述的定义用图形来表示的话,则可以很快得到答案。


b8c8f7be52c11ad9d3ed93d2b84823c51528f58a

这条语句的数组名为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

从程序可知,要输出某个字符串的字符,可以使用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月上线运营。公众号【异步图书】,每日赠送异步新书。