C语言——指针和数组地址、链表和数组的区别

1.指针和数组地址的区别:

指针是一个变量,存储的是相应数据类型的地址;数组地址是一个地址常量;所以,指针可以进行增量运算,而数组名(指向该数组的地址,即数组首元素的地址)不可以进行增量运算;

但在函数传参时,情况有所变化,将一个数组传入函数,函数会将形参的数组名退化成一个指针,此时,在函数内,数组名可以进行增量运算。

2.链表和数组的区别:

数组的优点:随机访问性强
                      查找速度快

数组的缺点:插入和删除效率低
                     可能浪费内存
                     内存空间要求高,必须有足够的连续内存空间。
                     数组大小固定,不能动态拓展

链表的优点:插入删除速度快
                     内存利用率高,不会浪费内存
                     大小没有固定,拓展很灵活。
链表的缺点:不能随机查找,必须从第一个开始遍历,查找效率低

详见:https://blog.csdn.net/qq_25806863/article/details/70607204#commentBox

为什么数组的查找速度快:原因有二:一是数组的随机访问性强,只要知道索引即可取出数据,而链表需要从头去遍历,这对应数组的寻址次数少,链表的寻址次数多;二是因为局部性原理:缓存一般会将一片连续区域读入,而数组是连续的地址空间,链表是分散的地址空间。

详见:https://blog.csdn.net/weixin_42323655/article/details/81210954

发布了39 篇原创文章 · 获赞 2 · 访问量 6210
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览