数组就是指针,指针就是数组,这样的言论在评论区看到不下于10次。
翻开《C专家编程》,来到第四章,标题非常醒目:
令人震惊的事实,数组和指针并不相同。
之前的视频我们讲过,数组可以用指针来表示,指针也可以用数组的形式来访问,今天再来盘点一下,数组和指针有哪些区别。
第一个声明的方式不一样。
比如在 1.c 文件中定一个全局数组:
如果想在 2.c 文件中使用,那么只能写成这样:
extern int array[];
如果写成:
extern int *array;
程序就会崩溃。
虽然编译没有问题,但是运行的时候,array 可能就是个空指针。
第二个访问的方式也不一样。
对于数组来说,先是取下标的值,然后跟数组首元素的地址相加,最后取对应地址里面的内容。
指针则是先取指针变量里面的地址,然后再取对应地址里面的内容。
第三个也是它们最本质的区别 ,数组用于保存数据,指针用于保存数据的地址。
第四个使用场景不同。
指针常用于动态数据结构,配合 malloc 和 free 函数,根据实际情况分配和释放内存;数组通常用于存储固定数目,且数据类型相同的元素,内存一般隐式分配和删除。
数组和指针,日常使用中尽管看上去一样,但是底层实现的机制却不同。
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !