指针与数组的区别
指针 数组
保存数据的地址,任何存入指针变量 p 的数据都会被当作地址来处理 保存数据,数组名 a 代表的是数组首元素的首地址,&a 是整个数组的首地址
间接访问数据,首先取得指针变量 p 的内容,把它当做地址,然后从这个地址提取数据或向这个地址写入数据。

指针可以以指针的形式访问 "*(p+i)" 也可以以下标的形式访问 "p[i]"。但其本质都是先取 p 的内容后加上“i*sizeof(类型)”字节作为数据的真正地址。
直接访问数据,数组名 a 是整个数组的名字,数组内每个元素并没有名字。只能通过"具名+匿名"的方式来访问其某个元素,不能把数组当一个整体进行读写操作。

数组可以以指针的形式访问"*(a+i)",也可以以下标的形式访问"a[i]"。但其本质都是 a 所代表的数组首元素的首地址加上"i*sizeof(类型)"字节来作为数据的真正地址
通常用于动态数据结构 通常用于存储固定数目且数据类型相同的元素
需要 malloc 和 free 等相关的函数进行内存分配 隐式分配和删除
通常指向匿名数据 自身即为数组名