1.首先定义一个指针数组,存储int型的指针元素。
int * parray[3];
赋值给该数组:
int a=1,b=3,c=5;
parray[0]=&a;
parray[1]=&b;
parray[2]=&c;
猜猜: printf("%d\n",sizeof(parray));的打印值。
Java代码
- //结果:
- 12
原因:一个指针占4个字节,数组有三个元素所以是:4*3=12。 若换成char * parray是一样的,和元素类型无关。
2.再看看这个:
Java代码
- char **parray[3];
- printf("%d\n",sizeof(parray));
- //结果
- 12
- char *(*parray)[3];
- printf("%d\n",sizeof(parray));
- //结果
- 4
3.来看看这个:
Java代码
- int a=1,b=3,c=5;
- int *parray[3];
- parray[0]=&a;
- //*(parray++)=&b; //非法的,数组的这个表示比较特殊不能像指针那样移动,应该赋值给一个int *p=parray;后再用p移动。
- printf("%d\n",parray[0]);
- //结果,parry[0]中存储的是指针(即地址)。
- 1245024 //就是a的地址。通过*parray[0]可以取到a的值。*的含义就是根据这个地址去取值。