分享

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

 长沙7喜 2017-07-14

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

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

指针数组 本质呢 是数组!

数组指针 本质呢 是 指针!

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

\

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

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

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

#include

int fun()

{

  1. char *p1[10]; // 指针数组

  2. char (*p2)[10]; //数组指针

  3.  

  4. //10个char变量

  5. char a1[10]={'1','2','3','4','5','6','7','8','9','\0'};

  6. //两个长度为10的一维数组

  7. char a2[2][10]={{'q','w','e','r','t','y','u','i','o','\0'},{'a','s','d','f','g','h','j','k','l','\0'}};

  8.  

  9.  

  10. //将十个char类型变量的地址依次放到指针数组里

  11. p1[0]=&a1[0];

  12. p1[1]=&a1[1];

  13. //...

  14. p1[8]=&a1[8];

  15.  

  16.  

  17. //验证输出

  18. printf('%c\n',*p1[0]);

  19. printf('%c\n',*p1[1]);

  20. //...

  21. printf('%c\n',*p1[8]);

  22.  

  23. //将一维数组的地址放到数组指针里

  24. p2=&a2[0];

  25.  

  26. printf('%s\n',p2);

  27. printf('%s\n',p2+1);//注意此处+1为加一行!

  28.  

  29. return 0;

}


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


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

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

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

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

稿源:互联网



邢帅教育推出VIP系统学习班啦,包括C语言基础至项目系统学习班、C++基础至项目系统学习班等,全部都是系统教学:直播课 + 直播回放 + 一对一答疑 + 布置作业 + 学习关卡 + 项目实践 。拥有自己开发的授课平台:PC客户端、手机APP等!


C语言免费公开课:每周1至周6晚上21:00-22:00,加入【交流群:538728851】找群主-小路老师即可听课哦

C/C++大牛讲师直播讲解知识点,一次公开课让你学会一项小技能


C语言编程学习

学习Q群:538728851

联系小编:

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多