|
发表于 2014-11-16 23:18:26
|
显示全部楼层
其实LZ 按我对指针的理解是这样的
什么叫指针呢?
顾名思义就是指向一个东西,也就是一个地址。
个人看法指针相当于一个"门牌"或者就是一个标志
如: int a[9];int *p;p=a;
[b]1.此时的指针p相当与一个房间的门牌号(001),而a相当与001这空房间里的某个东西(抽屉把里面有9个物品,连续的放在一起,每1个物品放一层,一层可以放4个物品也就是相当于一个int型有4个字节)而第一个物品就是a[o],第二个物品就是a[1],第三个物品就是a[2]等吧.那么p=a就是说001房间里面的抽屉。
[b]2.当把上面的p=a换成p=&a[0]时,按上面解释就是说001房间里面抽屉的第一个物品。
&这个意思是取地址符号也就是取了抽屉第一个物品的地址。不难理解把。
之所以有指针就是方便我们有目的性有方向性的去寻找一个东西。
如果是int **b;(一个二级指针)也就是说二级指针就相当于一个楼房的第几层。
按上述说: 我们要想需找到一个我们上面那说的抽屉就要让二级指针(**p)指向一级指针(*p),然后一级指针在指向抽屉。
当我们用printf("%d\n",sizeof(a));的时候为什么是36呢?
按上面分析 一个抽屉就可以装36个物品!
而对于2维数组 a[10][10] ;int * p=a[0]; printf("%d\n",sizeof(a[0]));这里面的a[0]相当与一维数组里面的a;
看这一代码就明白了结果是4# include <stdio.h>
void main()
{
int a[10] ;
int * p=a;
printf("%d\n",sizeof(a[0]));
}
不知道这样理解可以不,望大家点评下
|
|