C语言|指针数组,数组指针,函数声明

本文详细解释了如何声明一个含有10个元素的函数指针数组,每个元素接收int指针并返回int,区分了指针数组与数组指针的概念,并强调了两者在声明中的不同结构。
摘要由CSDN通过智能技术生成

声明一个指向含有10个元素的数组的指针,其中每个元素是一个函数指针,该函数的返回值是int,参数是int*,正确的是(A) 
A.int (*p[10])(int*)
B.int [10]*p(int *)
C.int (*(*p)[10])(int *)
D.int ((int *)[10])*p


让我们一步步解释一下这个声明

1.类型:int 表示函数的返回类型是整数。
2.函数指针:(*p[10]) 表示 p 是一个包含10个元素的数组,每个元素都是一个指针,指向一个函数。
3.参数类型:(int *) 表示函数的参数是一个指向整数的指针。

这个声明的结构可以分解为以下几个部分:
1.int (...):这表示函数的返回类型是 int。
2.(*...):这表示括号中的内容是一个指针。
3.p[10]:这表示 p 是一个有10个元素的数组。
4.(int *):这是函数的参数列表,表示函数接受一个指向 int 的指针作为参数。
将这些部分组合起来,我们得到 int (*p[10])(int *),这是一个声明,它创建了一个名为 p 的数组,数组中的每个元素都是一个函数指针,这些函数接受一个 int 指针作为参数,并返回一个 int。
 


补充:指针数组与数组指针

指针数组是一个数组,其元素都是指针。这意味着数组的每个元素都存储着一个地址,这个地址指向某个数据或函数。指针数组的声明如下:
int *arr[10]; // arr是一个包含10个int指针的数组。在这个例子中,arr 是一个数组,有10个元素,每个元素都是一个指向 int 类型数据的指针。
数组指针
数组指针是一个指向数组的指针。这意味着指针指向的是一个完整的数组,而不是数组中的单个元素。数组指针的声明如下:
int (*ptr)[10]; // ptr是一个指向包含10个int元素数组的指针。在这个例子中,ptr 是一个指针,它指向一个具有10个 int 类型元素的数组。

【关键区别】
指针数组:是一个数组,主要关心的是数组中的指针所指向的内容。
数组指针:是一个指针,主要关心的是这个指针指向的整个数组的内容。
【记忆方法】
如果*号紧跟在数据类型后面,它定义的是一个指针数组。
如果*号紧跟在变量名前面,并且变量名被括号包围,它定义的是一个数组指针。
 

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值