数组与指针的比喻
新人小白,初学数组与指针,想要略谈一下两者的联系与区别。
我喜欢用比喻的方式说明问题。
现在,你可以把庞大的电脑内存看作一个世界(类似于我的世界),每个方块都有它的坐标,,每个方块也都有它本身的内容(比如说石头,草块,泥土);这就对应着电脑数据内容的两大要素:数据本身与数据在电脑中的地址。
而数组可以说是电脑为了声明一堆数据而在这个世界中建的公寓,一维数组即为一层公寓,多个房间;二维可以是多层公寓,多个房间;三维就是一个小区了……需要注意的是,这些房子的建设者为了省事儿,把每个房间的大小建设的一样大,房间大小取决于你的你的声明,如果你用int声明,那么你会得到一堆四个格格大小的房间。
而指针就是电脑数据对应的地址,记录的就是每个房间的门牌号。对于一个大小只有四个格格的房间来说,他的门牌号就是第一个格子的坐标,对于一整个数组来说,他的地址就是第一个房间的第一个格子的坐标。
需要注意的是,这里指针加一不是数值加一,而是“门牌号”加一,即直接加了一个房间的格数。如:
#include<stdio.h>
#define SIZE 4
int main()
{
short dates[SIZE];
short *pti;
short index;
double bills[SIZE];
double *ptf;
pti = dates;
ptf = bills;
printf("%23s %15s\n","short","double");
for(index=