数组和链表的区别,数组和指针的区别
2017-08-09 20:11
309 查看
1.数组和链表的区别整理如下:
数组静态分配内存,链表动态分配内存;
数组在内存中连续,链表不连续;
数组元素在栈区,链表元素在堆区;
数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。
2.数组与指针的区别
数组作为左值和数组作为右值时的区别造成了无数人的困惑与误解:数组名作为右值时确实等价于一个指针,因为数组无法像普通对象那样返回它的值,它的元素可能有成百上千个,但作为一个左值时——比如作为取地址操作符的操作数时,数组就是作为一个数组对象而出现的,而不是指针,取地址返回一个指向数组的指针,而不是指向指针的指针。
数组静态分配内存,链表动态分配内存;
数组在内存中连续,链表不连续;
数组元素在栈区,链表元素在堆区;
数组利用下标定位,时间复杂度为O(1),链表定位元素时间复杂度O(n);
数组插入或删除元素的时间复杂度O(n),链表的时间复杂度O(1)。
2.数组与指针的区别
数组作为左值和数组作为右值时的区别造成了无数人的困惑与误解:数组名作为右值时确实等价于一个指针,因为数组无法像普通对象那样返回它的值,它的元素可能有成百上千个,但作为一个左值时——比如作为取地址操作符的操作数时,数组就是作为一个数组对象而出现的,而不是指针,取地址返回一个指向数组的指针,而不是指向指针的指针。
相关文章推荐
- c++ 指针 数组区别
- char[]数组与char *指针的区别
- C/C++数组名与指针区别深入探索
- 数组指针和指针数组的区别
- java链表及数组的区别
- C/C++数组名与指针区别深入探索
- 数组与指针的区别
- 数组指针与指针数组的区别
- 一维数组和指针数组和数组指针,以及扩展到二维数组和二级指针的分析和区别
- 字符数组与字符指针的区别以及字符串常量的修改
- c语言中数组和指针的区别与联系
- 数组指针和指针数组的区别
- 数组与指针的区别
- 数组和指针的区别
- [C++] 从编译器角度分析数组名与指针的区别
- char *a 和char a[] 的区别(指针和数组的区别)
- 字符串指针与字符数组的区别
- 以链表和数组实现并归排序的区别
- 指针和数组名的区别
- C语言中函数返回数组;数组与指针的区别