当前位置:   article > 正文

C语言⼆级指针如何操作字符串数组(指针数组)?

C语言⼆级指针如何操作字符串数组(指针数组)?

一、问题

        对于字符串数组该如何操作(⽽且是使⽤指针数组存储)?

二、解答

        使⽤指针的指针实现对字符串数组中字符串的输出。指向指针的指针即是指向指针数据的指针变量。这⾥创建⼀个指针数组 strings,它的每个数组元素相当于⼀个指针变量,都可以指向⼀个整型变量,其值为地址,如图所示。

        strings 是⼀个数组,它的每个元素都有相应的地址。数组名 stirngs 代表该指针数组的⾸单元的指针,就是说指针数组⾸单元中存放的也是⼀个指针。strings+i 是 strings[i] 的地址。strings+i 就是指向指针型数据的指针。

        指向指针数据的指针变量定义语句形式如下。

char **P;

        p 的前⾯有两个 * 号,* 运算符是从右⾄左结合,**p 就相当于*(*p),*p 表示定义⼀个指针变量,在其前⾯再添加⼀个 * 号,表示指针变量 p 是指向⼀个指针变量。*p 就表示 p 所指向的另⼀个指针变量,即⼀个地址。**p是 p 间接指向的对象的值。例如,这⾥ *(p+2) 就表示 strings[2]中的内容,它也是⼀个指针,指向字符串“ World wide ”。因此,输出字符串时,语句为:

printf(("%s\n",*(p+i));

        下⾯来看⼀个具体的程序,让⼤家对此有更进⼀步的了解。

  1. #include <stdio.h>
  2. int main()
  3. {
  4. char *strings[] = {"C language",
  5. "Basic",
  6. "World wide",
  7. "Olyupic",
  8. "Great Wall"};
  9. char **p, i;
  10. p = strings;
  11. for (i = 0; i < 5; i++)
  12. {
  13. printf("%s\n", *(p + i));
  14. }
  15. return 0;
  16. }

三、总结

        指针数组本身存储的就是字符串的⾸地址,再使⽤⼆级指针去进⾏操作,这很难理解, 但是所带来的优越性能却是⽆可⽐拟的,所以⼤家⼀定要尽⼒去理解、掌握这⼀部分内容。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/528522
推荐阅读
相关标签
  

闽ICP备14008679号