如何定义一个指向数组的指针

如何定义一个指向数组的指针,第1张

指针数组是指数组里的元素是指针,比如char

*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

int

a[3]

=

{1,

2,

3}

int

(*p)[3]

p

=

&a

这样是没错的,p是一个指针类型的数据,它指向的是三个int类型的数组,要用p指向的数据可以这样(*p)[0],(*p)是解出p指向的数据,也就是数组a,其实也就是数组a的首地址,然后就可以用下标[]取数据了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7975853.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存