C语言中的int (*a[10]) (int)是什么意思?举个小例子吧

用个短程序举例,谢谢

定义一个有10个元素的整型(int)数组,数组元素从a[0]到a[9],不包括a[10],操作方法如下:

1、新建一个工程和.c文件,输入头文件和主函数。

2、声明函数并且初始化数组,如下图所示。

3、然后通过调用函数输出二维数组的值,如下图所示。

4、然后定义一个函数,调用函数如下。

5、最后点击编译、运行,如下图所示就完成了。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-27
这样的表达式可以遵循这样的规则:从右向左,由近及远,括号优先;比如
从a符号开始。其右边是[10],说明a是个数组,其中存了十个元素。
再看a的左边是一个*。说明数组中存的是指针。
现在在看(*a[10])的右边是(int);说明所存的指针是指向有一个int形参的函数
现在看(*a[10])的左边是个int ,说明指向的函数的返回值为int 类型;
下面是代码;不过为了简化,我把数组改成了长度为3。但是不影响理解。
#include <stdio.h>
int a1(int);
int a2(int);
int a3(int);
int main()
{
int (*a[3]) (int);
a[0] = a1;
a[1] = a2;
a[2] = a3;
int x1 = a[0](3);
int x2 = a[1](3);
int x3 = a[2](3);
printf("x1=%d\n",x1);
printf("x2=%d\n",x2);
printf("x3=%d\n",x3);
return 0;
}
int a1(int x){
printf("这是a1,其中x的值为:%d\n",x);
return x;
}
int a2(int x){
printf("这是a2,其中x的值为:%d\n",x);
return x;
}
int a3(int x){
printf("这是a3,其中x的值为:%d\n",x);
return x;
}
希望对你有帮助。追问

说的很详细,谢谢!也谢谢其他热心网友了

本回答被提问者采纳
第2个回答  2013-08-25
int (*a[10]) (int)——a是具有10元素的数组,它的每一个元素都是指向函数的指针,这些指针指向的函数具有一个int型形参、返回一个int值。
第3个回答  2013-08-25

这个是定义了一个函数指针数组,指向的函数类型是int func(int)

比如:

int func1(int n)
{
    printf("func1: %d\n", n);
    return n;  
}
int func2(int n)
{
    printf("func2: %d\n", n);
    return n;  
}
int main()
{
    int (*a[10])(int) = {NULL};
    a[0] = func1;
    a[1] = func2;
    a[0](1);
    a[1](2);  
    return 0;    
}

第4个回答  2020-02-16
这个是定义了一个函数指针数组,指向的函数类型是int
func(int)
比如:
int func1(int n)
{
printf("func1: %d\n", n);
return n;
}
int func2(int n)
{
printf("func2: %d\n", n);
return n;
}
int main()
{
int (*a[10])(int) = {NULL};
a[0] = func1;
a[1] = func2;
a[0](1);
a[1](2);
return 0;
}

C语言中 int (*a[10])(int); 表示什么意思?这个a是哪种指针?
指向函数的指针数组 (ps : 搞明白数组指针和指针数组)这个函数数组 返回值是 int ,传入的参数是 int

c语言int a[10] 10是什么意思
inta【10】【10】指的是代表a的二维数组,是指向一个有十个元素的数组的指针,或者说a是具有十个元素的数组的首元素的地址,这十个元素,每个元素都是一个数组。

int (*a)[10] 和 int *a[10] 什么区别啊?希望能详细点!
int *a[10] :数组指针。数组a里存放的是10个int型指针 int (*a)[10] :a是指针,指向一个数组。此数组有10个int型元素 int *a[10]先找到声明符a,然后向右看,有[]说明a是个数组,再向左看,是int *,说明数组中的每个元素是int *。所以这是一个存放int指针的数...

int *a[10]和int(*)a[10]分别是什么意思?
int *a[10]; 定义了一个指针数组,即10个int * 类型的指针 int (*a)[10]; 定义了一个指向行的指针变量,注意是”一个”指针变量,而上面的指针数组是”10个”指针变量。指向行的指针变量可以用来指向二位数组int x[N][10],a指向x即:a <==> x 或者 x[0] 或者 &x[0][0...

int* (*a)[10] 的含义
这个需要从右向左读,首先是:(*a)[10]它是一个执行一维数组其长度为10的指针。然后是 ((*a)[10])它是一个指向数组指针的指针。

C语言 指针中 这个(a+10)什么意思?
a[10]是一个int类型的数组。a的本质是是一个指针,指向的就是数组的首地址,因此,a+10就是a[10]的地址,虽然a[10]已经超出了索引了。再比如,a+9等价于&a[9]

C语言中的int类型
int a = 10; int *p = &a; *p = 20; \/\/ 通过指针修改a的值数值范围C语言中的int类型在大多数情况下取值范围是-2147483648到2147483647。然而,对于更大的数值,可以考虑使用long或long long类型。这里有相关宏定义以获取范围:include printf("int类型的最小值是:%d\\n", INT_MIN); printf(...

在C语言中,数组a[10]是什么意思
例如,a[5],a[i+j],a[i++]都是合法的数组元素。数组元素通常也称为下标变量。总之数值在0到9之间,超过此范围则有误。include <stdio.h> int main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};for(int i=0;i<10;i++)printf("a[%d]=%d\\n",i,a[i]);return 0;} ...

C++中int a[10]=100是什么意思?
这是个错误的声明并赋值的语句,从在语法错误;int a[10]声明的是一个整型的数组a,大小为10,要给它赋初值就必须用{}来括住,否则在声明的后面另起语句赋值。如:a[0] = 100; 如果是int a[10]={100}; 那么就是给a[0]赋值一个100 ...

int a[10]; 说明整型数组a,有10个元素。
下标0开始,然后到9正好10个,a[10]只是说定义的时候是10个长度

相似回答