数组与指针的是有区别的,在《C专家编程》与《C和指针》这两本书里都是有记载的。本文以学习笔记的形式将其收录,旨在告诉自己和提醒自己,归纳这些区别。
不同点
- 指针是间接访问,数组是直接访问
- 指针保存数据的地址,数组是保存数据
- 指针通常访问动态数据结构,数组通常用于固定数据类型
- 指针通常相关函数为malloc与free,数组通常是隐式分配和删除
- 指针通常指向匿名数据,数组自身即为变量
- 指针可以创建锯齿状数组,而数组则不能自己创建锯齿状数组
- 数组是一种有固定大小、有序排列的数据结构,它的元素类型必须一致,而指针只是一个变量,存储了一个地址,指向的对象可以是任何数据类型。
- 数组的大小在声明时就已经确定,无法改变,而指针的指向可以在程序运行时动态地改变。
- 对数组名进行取地址操作得到的是数组首元素的地址,而对指针变量进行取地址操作得到的是该指针本身的地址。
- 在函数参数中,数组作为参数传递是以数组的形式传递的,即传递了整个数组的副本,而指针作为参数传递是以指针的形式传递的,即传递了指向数组首元素的指针。
- 对数组名进行sizeof操作得到的是整个数组的大小,而对指针变量进行sizeof操作得到的是该指针变量本身的大小。
相同点
- 数组和指针都可以用来存储和操作内存地址
- 数组和指针都可以访问值
- 数组和指针都可以用来传递参数给函数,并在函数内部修改参数的值。
总结
文章虽短小,但通过此,也能掌握一点知识,希望能帮助到读者。谢谢。