问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言 怎么调用指针数组函数

发布网友 发布时间:2022-04-23 09:42

我来回答

3个回答

热心网友 时间:2023-10-09 21:09

1.函数指针的数组定义方法:返回值类型( * 指针变量名[Number]) (形参列表)。
例如:
double add(double a,double b){};
double sub(double a,double b){};
double mul(double a,double b){};
double div1(double a,double b){};
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函数指针的数组定义

2.函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数,就如同用指针变量可引用其他类型变量一样,在这些概念上是大体一致的。函数指针有两个用途:调用函数和做函数的参数。

3.函数指针的声明方法为:
返回值类型( * 指针变量名) (形参列表);
“返回值类型”说明函数的返回类型,“( * 指针变量名)”中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的“形参列表”表示指针变量指向的函数所带的参数列表。例如:
int func(int x); /* 声明一个函数 */
int (*f) (int x); /* 声明一个函数指针 */
f = func; /* 将func函数的首地址赋给指针f */
或者使用下面的方法将函数地址赋给函数指针:
f = &func;
赋值时函数func不带括号,也不带参数,由于func代表函数的首地址,因此经过赋值以后,指针f就指向函数func(x)的代码的首地址。
例子:

#include<stdio.h>
int max(int x,int y){return (x>y? x:y);}
int main(){
    int (*ptr)(int, int);
    int a, b, c;
    ptr = max;
    scanf("%d%d", &a, &b);
    c = (*ptr)(a,b);
    printf("a=%d, b=%d, max=%d", a, b, c);
    return 0;
}

热心网友 时间:2023-10-09 21:09

指针数组 就是有一个数组,数组中的元素都是指针,这些指针有相同的类型
int *a[3];
char *b[4];
double *c[5];
--------------------------------------------------------
char paixu(char *a[5]) //这样才是字符串数组
{
int i,j;
char *p;
for(i=0;i<5;i++)
{
for(j=0;j<4-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
p=a[j]; a[j]=a[j+1]; a[j+1]=p;
}
}
}
}

热心网友 时间:2023-10-09 21:09

#include<stdio.h>
#include<string.h>

void paixu(char **a)
{
int i,j;
char *p;
for(i=0;i<5;i++)
{
for(j=0;j<4-i;j++)
{
if(strcmp(a[j],a[j+1])>0)
{
p=a[j];
a[j]=a[j+1];
a[j+1]=p;
}

}
}
}
void main()
{
char *a[]={"Hongkong",
"Singgapore",
"Beijing",
"London",
"Washington"
};
int i;
printf("输出地址\n\n");
for(i=0;i<5;i++)
{
printf("%s \n",a[i]);
}
paixu(a);
printf("最终排序是\n\n");
for(i=0;i<5;i++)
{
printf("%s \n",a[i]);
}

}

main函数中a是常指针,它指向一组数组,这组数组每个元素又是指向字符串的指针,所以数组中每个元素的类型是char* , 因此变量a的类型是(char*)*,即char**.排序没有必要返回char吧(完成排序功能还用返回一个字符么?),函数参数改为char**类型,这样才能将指针数组首地址传入函数.
向函数里传入的是数组指针,我更改的是数组元素,这是明显的按地址传递方式传递参数,还用再return么.
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
成都汇众益智游戏学院怎么样 为什么苹果手机屏幕老是自动滚上去? roughness test什么意思 国家标准打印纸为每包500张,小雨同学家里新买—包打印 纸,她想练习... 谁知道卡布奇诺含义 卡布奇诺咖啡历史 电脑针式打印纸有哪些规格? 外籍人才招聘 接种甲肝疫苗会出现什么不良反应 中华人民共和国境内的任何人均应接种哪些疫苗 中华人民共和国土地征用赔偿法 什么叫做海牙认证?多少钱 冷冷的夜晚北风吹,找不到人安慰 是什么歌? c语言中函数指针作为参数与函数的嵌套 现在国家征地赔偿价格是多少钱一亩 c语言指针型函数 什么是香港公司海牙公证Apostille 是谁在冷冷的夜,我的心事你没发觉.这是哪首歌的歌词? 关于c语言的函数指针 房子被政府违法强拆如何赔偿 什么海牙认证? 歌词“冷冷的夜里北风吹、找不到人安慰、当初的誓言太完美、让相思化成灰、、”是哪首歌里面的? c语言,函数里的指针问题? 农村土地如果被占用应如何赔偿? 我喜欢的一首歌,不过忘了歌名,歌词好像是“冷冷的夜太凄美,嗜血的堡垒,神的旨意被违背,族人的伤悲。 c语言函数与指针 西班牙的海牙认证是什么? 国家征收土地到底每亩要赔偿多少钱 郭富城的《天涯》 歌词 c语言中函数名就是一个指针吗 一个人走过长长的街,一个人走过冷冷的夜。是什么歌? 美国国际海牙认证是什么?怎么办? 华为al10卡顿怎么办? 冷冷的夜里秋风吹 找不到人安慰 当初的誓言太完美 让相思化成灰是什么歌的歌词 有没有人知道出国需要的 海牙认证 apostille 认证怎么办???sos sos 郑智化《单身逃亡》的歌词 Apostille确认书是领事认证吗,应该怎么办(急),谢谢 为什么国外客户让办Apostille认证? 操作系统中work与available的区别 香菜市场需求大,香菜如何反季节栽培呢? 海牙公约认证与双认证是什么? 有谱Work登录系统后是否能直接进入某个应用主页? 请问apostille认证只能去领事馆办吗?成绩证明应该是由哪个部门发行? 有谱work管理系统有电子签名功能吗? d盘中的work文件夹是系统文件夹吗 安装完workstation后系统的配置界面有什么变化 神舟笔记本质保多久 夏天香菜种植是农历的56月份还是阳历的56月份种植? 才装的系统,打开work总是出现下面的情况,每次都是,好烦躁,该怎么解决? 神舟的笔记本电脑的保修期是多久?如果需要换屏的话多久可以?