
*a[2]a[0]和a[1]是一个char
*类型的变量;
数组指针是说这个指针指向一个数组,比如char
(*a)[2],注意括号不能少,这就代表说a是一个指针,它指向一个数组,数组的大小是2,数组的元素是char类型的。
数组指针,用楼上的话就是指向数组的指针, *** 作指针就可以 *** 作数组如下:int
a[3]
=
{1,2,3}
int
*p
=
a
printf("数组指针:%d\n",
*(p+1))
//
打印的结果为2,原因是p初始化指向了数组a的首地址,即a[0]。*(p+1)即先将地址向后挪动一位即指向了a[1],再取地址里面的值,即取a[1]的值,故结果为2。
指针数组,保存指针的数组:
int
a1[2]
=
{1,2}
int
a2[3]
=
{1,2,3}
int
a3[4]
=
{1,2,3,4}
int*
parray[3]
=
{a1,
a2,
a3}
printf("指针数组:%d\n",*(parray[2]+3))
//打印结果为4,原因是每个数组的数组名就是指向该数组第一个元素的指针。而parray是存了3个指针的数组,parray[2]就是指针a3,a3+3就是指向了a3的第4个元素,所以parray[2]+3指向了a3的第4个元素。*(parray[2]+3))就是取地址里面的值,故为4
inta[3]
=
{1,
2,
3}
int
(*p)[3]
p
=
&a
这样是没错的,p是一个指针类型的数据,它指向的是三个int类型的数组,要用p指向的数据可以这样(*p)[0],(*p)是解出p指向的数据,也就是数组a,其实也就是数组a的首地址,然后就可以用下标[]取数据了。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)