• 欢迎访问C语言网www.dotcpp.com 比赛栏每月有奖月赛!举办比赛联系QQ:2045302297
  • 问题反馈、粉丝交流 QQ群327452739 蓝桥杯训练群:113766799 申请群时请备注排名里的昵称
  • C语言研究中心 为您提供有图、有料、解渴的C语言专题! 欢迎讨论!

关于数组指针与指针数组的解释

编程经验 CTO 12866次浏览 3个评论

关于数组指针和 指针数组,相信狠很多同学对此疑惑过,今天我们来把他们分个清楚!

首先,让我们从字面意义上理解他们:

指针数组 本质呢 是数组!

数组指针 本质呢 是 指针!

(PS:你可以认为后俩字是什么,它本质就是什么! 语文的知识吧?宾语?(*^__^*) )

关于数组指针与指针数组的解释\

搞清楚此点之后呢,我们就可以继续来讲了,其实呢,指针数组本身就是个数组,只不过呢,它里面存放的数据类型不是int,也不是char这类基本类型,而是一个指针类型,说白了就是地址,所以叫指针数组! 记住:是存放指针的数组!

那么理解这个之后,数组指针也一样的道理,它呢本质是个指针,只不过是指向一个一维数组的指针,也称之为“行指针”,前提呢,是这个一维数组的长度和这个数组指针的长度要一致才可以赋值。

下面我们通过代码来理解:

  1. //////////////////////////////////////////////////////////////////////////
  2. //Name: 测试 数组指针 与 指针数组
  3. //Author:C语言研究中心(www.dotcpp.com)
  4. //time:2015/5/28
  5. //////////////////////////////////////////////////////////////////////////
  6. #include<stdio.h>
  7. int fun()
  8. {
  9. char *p1[10]; // 指针数组
  10. char (*p2)[10]; //数组指针
  11.  
  12. //10个char变量
  13. char a1[10]={'1','2','3','4','5','6','7','8','9','\0'};
  14. //两个长度为10的一维数组
  15. char a2[2][10]={{'q','w','e','r','t','y','u','i','o','\0'},{'a','s','d','f','g','h','j','k','l','\0'}};
  16.  
  17.  
  18. //将十个char类型变量的地址依次放到指针数组里
  19. p1[0]=&a1[0];
  20. p1[1]=&a1[1];
  21. //...
  22. p1[8]=&a1[8];
  23.  
  24.  
  25. //验证输出
  26. printf("%c\n",*p1[0]);
  27. printf("%c\n",*p1[1]);
  28. //...
  29. printf("%c\n",*p1[8]);
  30.  
  31. //////////////////////////////////////////////////////////////////////////
  32. //////////////////////////////////////////////////////////////////////////
  33. //将一维数组的地址放到数组指针里
  34. p2=&a2[0];
  35.  
  36. printf("%s\n",p2);
  37. printf("%s\n",p2+1);//注意此处+1为加一行!
  38.  
  39. return 0;
  40. }

怎么样?能看明白吗?运行结果如下:

关于数组指针与指针数组的解释\

如果您通过注释看懂这段代码后,想必应该就清楚数组指针和 指针数组的区别了。

最后我们总结数组指针和指针数组的区别如下:

1、本质不同,一个是数组,一个是指针

2、数组指针是一个变量,指针数组是N(数组长度)个变量

C语言研究中心(www.dotcpp.com)

C语言网提供「C语言、C++、算法竞赛」在线课程,全部由资深研发工程师或ACM金牌大佬亲授课,更科学、全面的课程体系,以在线视频+在线评测的学习模式学习,学练同步,拒绝理论派,真正学会编程!还有奖学金等增值福利等你!

C语言网, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于数组指针与指针数组的解释
喜欢 (24)
[jinyangH@aliyun.com]
分享 (0)
发表我的评论
取消评论
表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
(3)个小伙伴在吐槽
  1. 来个评论吧
    距阵2016-09-05 20:42 回复
  2. 到底能不能加载出来
    bbb2016-09-05 20:43 回复
  3. 不是很清楚
    Cindy2016-10-19 19:23 回复