惧留孙网

juliusun.com

在线教程 > C语言教程 > 多维指针

多维指针

第 26/50 节 冥河C语言教程


多维指针,也称多重指针、多级指针,就是指向的内容仍然是指针。多维指针并没有新的语法,就好比多维数组同样是数组。多维指针也符合指针的语法。只不过由于指针变量指向的内容仍然是指针,显得有点复杂,对于初学者不容易理解,本节的目的在于使初学者见到多维指针不要慌乱。

一维指针定义方法如下:

类型名 * 指针变量名

二维指针定义方法如下:

类型名 ** 指针变量名

以此类推,N维指针变量前有N个星号*。

同样,要真正访问指针指向的最终非指针内容。一维指针在指名前加星号如*p1,二维指针用**p2,N维指针就是在指针变量前加N个星号。

下面讲个例子,判断5个字符串是否有小写z或大写Z字符,代码可以这样写。


  1. #include<stdio.h>
  2. int main( )
  3. {
  4. char *s[5] = {"abcdef","12345","xyz","*******","1+2=3"},**p = s;//二维指针定义时前面加两个星号*
  5. int find = 0; //用来记录是否发现了字符,发现时改为1
  6. puts("经分析在以下字符串中:");
  7. for(int i = 0;(i < 5) && (0 == find);++i,++p) //++p要指向s的下一个元素
  8. {
  9. puts(s[i]);
  10. while(**p != '\0')
  11. {
  12. if (('z' == **p) || ('Z' == **p)) //二维指针引用时前面加两个星号*
  13. {
  14. find = 1;
  15. break; //一旦发现,就不再判断后面的字符了
  16. }
  17. ++(*p) //要让s[i]元素指向下一个字符
  18. }
  19. }
  20. if(1 == find)
  21. {
  22. printf("发现了大写或小写字母z");
  23. }
  24. else
  25. {
  26. printf("未发现大写或小写字母z");
  27. }
  28. getchar( ) ; //使程序暂停一下
  29. return 0;
  30. }

效果类似如下图:

Pic

效果图仅供参考。

作者:冥河 QQ:3304576112
交流QQ群:554701039 C语言讲课群
本教程内容由本站保留版权,请勿复制传播
抖音
©2015-2024 惧留孙网 juliusun.com

京ICP备15039193号-1

首页 教程 下载 文章 聊天 我的