理解指针数组,数组指针,函数指针,函数指针数组

一.指针,函数,数组组合后的概念

指针数组与数组指针的理解离不开内存的概念

1.指针变量是保存有指向一块内存区域的地址的变量(1.指向的区域2.指向内存区域的大小)

2.数组是具有相同元素特性的内容的集合(1.数组的内容开辟空间大小2.数组开辟空间的大小)

int*[]       指针数组:1.是一个数组2.数组的内容是指针3.大小由[]内的内容决定4.指针指向的内存大小由int决定

int (*)[]  数组指针:1.是一个指针2.指针指向的是一个数组3.数组的内容是int型4.数组的大小由[ ]内内容决定

int(*)()函数指针:1.是一个指针2.指向的是一个函数3.函数的返回值是int型(函数没有类型,只有函数返回值有类型)4 .                                     函数指针指向的内存大小由函数决定

int(*[])()函数指针数组:1.是一个数组2.数组内放的是函数指针3.数组的大小由[ ]的内容决定3.指针指向的是函数(函数名不加                                        ()代表函数地址,函数名加()代表函数调用)

二.数组和指针的传参

数组名不使用&赋值时表示数组首元素地址。

数组指针:int*[]     数组指针传参时,数组会降维成指向其内部元素的指针,(即二级指针)

扫描二维码关注公众号,回复: 1029949 查看本文章

指针数组:int(*)[]       指针数组传参时,传的是指针,其指向的内存区域是一个确定大小的数组,传参后解引用可以找到整个                                     数组     

函数指针:int(*)()函数指针传参时传的是一个指针,但是传参时需要把函数的传参类型和函数的返回值类型给带上

函数指针数组:int([])()这里写调用函数指针数组的内容,因为是一个数组调用时只需要   数组名+数组下标 就可以调用其内容                                了,它的内容是一个函数指针,这里对函数指针的指向的函数调用可以不用*(解引用)直接传递参数就可以                              了

3.数组与指针的转换

数组与指针并没有关系,他们是两种不同的类型,只是因为数组名表示的是一个地址值,所以之间可以相互转换

a[1][1]=(*(*(a+1)+1)

a[2][3][4]=(*(*(a+2)+3)+4)

另外,无法把指针本身传给一个函数(传参时只能传指针的内容)


猜你喜欢

转载自blog.csdn.net/Joy_Dang/article/details/80435747
今日推荐