指针数组,数组指针,指针函数,函数指针数组,指向函数指针数组的指针

数组指针

定义:int (* p)[10]

p先和*结合,所以p首先是一个指针变量,它指向一个大小为n个整形数组。所以arr是一个指针,指向一个数组,所以叫做数组指针。

存储数组的地址:

  int arr[10] = {0};
  int (*p)[10] = &arr;

二维数组指针:

{
int a[3][5];
int (*p)[5]=a;
}
a是个二维数组的数组名,相当于一个二级指针常量;
p是一个指针变量,它指向包含5个int元素的一维数组,此时P的增量以它所指向的一维数组的长度为单位
*(p+i)是二维数组a[i][0]的地址;
*(p+2)+3表示a[2][3]地址
*(*(p+2)+3)表示a[2][3]的值。

指针数组

定义:int* p[10]
 []的优先级高于*,所以p是一个数组,是一个有10个整形指针的数组。

*p = a; *p表示指针数组第一个元素的值,即a的首地址的值。
如要将二维数组赋给一指针数组:
int *p[3];
int a[3][4];
p++; //该语句表示p数组指向下一个数组元素。注:此数组每一个元素都是一个指针
for(i=0;i<3;i++)
p[i]=a[i]
这里int *p[3] 表示一个一维数组内存放着三个指针变量,分别是p[0]、p[1]、p[2]
所以要分别赋值。

函数指针

定义:类型名 *函数名(函数参数列表);
  函数指针是指向函数的指针变量,函数指针从根本上是一个指针变量,不过该指针变量指向的是一个函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样。
用途:调用函数,做函数的参数。

函数指针数组

定义:类型名(*arr[10])(函数参数列表)

数组是一个存放相同类型的数据空间,如前面的指针数组:int *arr[10]//数组的每个元素是int *类型,

把函数的地址存放在一个数组中,这个数组叫做函数指针数组,如:int (*arr[10])();

指向函数指针数组的指针

指向函数数组的指针是一个指针,指针指向一个数组,数组的元素都是函数指针。

int (*(*arr)[10])();





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值