数组,指针

本文详细探讨了数组和指针的关系,包括如何定义和理解指针数组、函数指针以及指向数组的指针。内容涉及不同类型的指针表达式,如指向函数的指针数组、具有函数指针元素的数组等,并通过实例解析了它们的定义和用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

int *a[10];   //指向int类型的指针数组a[10]
int (*a)[10]; //指向有10个int类型数组的指针a
int (*a)(int);//函数指针,指向有一个参数并且返回类型 均为int的函数
int (*a[10])(int); //函数指针的数组,指向有一个参数并且返回类型均为int的函数的数组





========== 1. 由变量描述到表达式 ==========
本题
用变量a给出下面的定义:一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数并返回一个整型数:

1. 定义一个数组
a[10] 
2. 该数组元素是指针
*a[10]
3. 该指针指向一个函数,
(* a[10]) ()
4. 有一个整形参数
(* a[10]) (int)
5. 并返回一个整形数
int (* a[10]) (int)

另外一个例子:
定义一个函数指针,指向的函数有两个int形参并且返回一个函数指针,返回的指针指向一个有一个int形参且返回int的函数?
来自 <http://www.nowcoder.com/questionTerminal/960f8047a9ee4a6f8227768f3bc2734d>

1. 定义一个函数指针
(*p)
2. 指向的函数有两个int参数
(*p) (int,int)
3. 返回值是一个函数指针
* (*p) (int,int)      (* (*p) (int,int))
4. 返回的指针指向一个int参数
(* (*p) (int,int))(int)
5. 并返回 int
int  (* (*p) (int,int))(int)
所以:int  (* (*p) (int,int))(int)

相似的一个例子
声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是()

来自 <http://www.nowcoder.com/questionTerminal/242d747044bd417e95fe37d69884dff8>
1. 声明一个指针
(*p)
2. 该指针指向一个数组
(*p)[10]
3. 每个元素是一个函数指针
(*(*p)[10])()
4. 参数是int*
(*(*p)[10])(int*)
5. 返回值是int
int (*(*p)[10])(int*)

========== 2. 由表达式到变量描述 ==========

经典例子
注意: 指向数组的指针和指针数组
int *a[10]: a是一个数组,该数组的元素是指针,每个指针都指向一个int型
int (*a)[10]:a是一个指针,该指针指向一个数组,数组元素是int

int (*a)[10]:  declare a as pointer to array 10 of int
int *a[10]: declare a as array 10 of pointer to int

例子1
int (*a[10])(int)
1. a是一个数组
2. a这个数组的元素是一个指针
3. 指针是一个函数指针
4. 这个函数参数是int,返回值是int

a是一个包含10个元素的数组,每个元素指向一个参数是int,返回值是int的函数。

declare a as array 10 of pointer to function (int) returning int
-----------
例子2
int (*(*p)[10])(int*)
1. p是一个指针
2. p这个指针指向一个数组
3. 数组元素是指针
4. 数组元素的指针指向一个函数
5. 这个函数参数是int*,返回值是int

p是一个指向包含10个元素的数组的指针,每个元素是一个函数指针,指向一个参数是int*,返回值是int的函数。
declare p as pointer to array 10 of pointer to function (pointer to int) returning int

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值