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

    xiaoxiao2024-05-18  102

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

    3.3 数组指针

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

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

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

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

    输出结果

    从程序可知,要输出某个字符串的字符,可以使用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);

    相关资源:敏捷开发V1.0.pptx
    最新回复(0)