C语言 数组VS指针
2016-07-21 10:21
323 查看
数组和指针完全是不一样的两个东西,但他们可以完成相同的功能。所以我们需要区分他们,大概可以从5个方面来区分:
1 空间分配:
数组:如果是局部变量,就在栈上分配一块连续的空间,分配的空间一般要比实际使用的大。属于静态分配空间。
指针:在堆上分配空间,是动态分配空间
2 访问效率:
数组属于直接访问,所以效率较高。而指针需要先访问指针的地址,再找到它所指向的空间,属于间接访问,效率低些。
3 安全性
数组因为数组大小是定义好的,所以可能会造成数组越界的问题。而指针会可能有野指针,会造成内存泄漏的问题
4 函数形参
数组会将其转化为指针,比如整型一维数组,用整型指针接参数。整型二维数组就用整型一维数组指针接参数。
5 操作
数组偏向于对值的操作,而指针偏向于对地址的操作。
一个在努力中的未来程序员,如果有更好的想法,欢迎评论。
1 空间分配:
数组:如果是局部变量,就在栈上分配一块连续的空间,分配的空间一般要比实际使用的大。属于静态分配空间。
指针:在堆上分配空间,是动态分配空间
2 访问效率:
数组属于直接访问,所以效率较高。而指针需要先访问指针的地址,再找到它所指向的空间,属于间接访问,效率低些。
3 安全性
数组因为数组大小是定义好的,所以可能会造成数组越界的问题。而指针会可能有野指针,会造成内存泄漏的问题
4 函数形参
数组会将其转化为指针,比如整型一维数组,用整型指针接参数。整型二维数组就用整型一维数组指针接参数。
5 操作
数组偏向于对值的操作,而指针偏向于对地址的操作。
一个在努力中的未来程序员,如果有更好的想法,欢迎评论。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 关于指针的一些事情
- 如何写好 C main 函数
- ruby 数组使用教程
- Ruby中的数组和散列表的使用详解
- C#实现AddRange为数组添加多个元素的方法
- C#比较二个数组并找出相同或不同元素的方法
- C#动态调整数组大小的方法
- Lua和C语言的交互详解
- 详解Lua中的数组概念知识
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- C#交错数组用法实例
- Linux Shell 数组建立及使用技巧
- PowerShell数组的一些操作技巧
- C#通过yield实现数组全排列的方法
- C#不重复输出一个数组中所有元素的方法
- C#实现将数组内元素打乱顺序的方法
- C#中用foreach语句遍历数组及将数组作为参数的用法