数组和指针不相同吗?数组和指针有哪些区别

描述

数组就是指针,指针就是数组,这样的言论在评论区看到不下于10次。

 

翻开《C专家编程》,来到第四章,标题非常醒目:

令人震惊的事实,数组和指针并不相同。

之前的视频我们讲过,数组可以用指针来表示,指针也可以用数组的形式来访问,今天再来盘点一下,数组和指针有哪些区别。

第一个声明的方式不一样。

比如在 1.c 文件中定一个全局数组:

数组

如果想在 2.c 文件中使用,那么只能写成这样:

extern int array[];

如果写成:

extern int *array;

程序就会崩溃。

虽然编译没有问题,但是运行的时候,array 可能就是个空指针。

第二个访问的方式也不一样。

对于数组来说,先是取下标的值,然后跟数组首元素的地址相加,最后取对应地址里面的内容。

数组

指针则是先取指针变量里面的地址,然后再取对应地址里面的内容。

数组

第三个也是它们最本质的区别 ,数组用于保存数据,指针用于保存数据的地址。

第四个使用场景不同。

指针常用于动态数据结构,配合 malloc 和 free 函数,根据实际情况分配和释放内存;数组通常用于存储固定数目,且数据类型相同的元素,内存一般隐式分配和删除。

数组和指针,日常使用中尽管看上去一样,但是底层实现的机制却不同。






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分