C语言---指针数组和数组指针,函数指针

指针数组和数组指针

数组指针

指向数组的指针

作用:方便的操作数组中的各种数据

例:

int* p = arr;

int (*p)[5]

指针数组

存放指针的数组

作用:用来存放多个指针

例:

int *arr[5]

int (*p)[5]和int *p[5]的区别

int (*p)[5] 这个声明定义了一个指针 ,指向一个包含5个整数的数组。

int *p[5] 这个声明定义了一个包含5个元素的数组 ,每个元素都是指向整数的指针

函数指针

格式:

返回值类型(*指针名)(形参列表)

例:int (*p)(int,int) = add;

作用:

利用函数指针,可以动态的调用函数

拓展

函数指针数组

形参完全相同,且返回值一致的函数可以放入同一个函数指针数组内

简易计算器代码案例
#include<stdio.h>
int add(int num1,int num2);
int reduce(int num1,int num2);
int multiply(int num1,int num2);
int divide(int num1,int num2);
int main()
{
    int num1,num2,choice;   
    //定义一个数组来存放4个函数指针
    //指针数组int *arr[5]   //函数指针int (*p)(int,int) = add;
    int (*arr[4])(int,int) = {add,reduce,multiply,divide};
    printf("请输入你要进行计算的两个整数(之间用/分隔):");
    scanf("%d/%d",&num1,&num2);
    printf("请选择你要进行什么计算(1:加、2:减、3:乘、4.除):");
    scanf("%d",&choice);
    //排除异常输入,当choice等于1、2、3、4时才进行计算
    if(choice == 1 || choice == 2 || choice == 3 || choice == 4)
    {
        //int (*p)(int,int)定义一个函数指针
        //(arr[choice-1])将数组内用户选择的算法函数指针传递给p
        int (*p)(int,int) = (arr[choice-1]);
        //调用函数指针p
        int num = p(num1,num2);
        printf("结果为%d\n",num);
    }
    else
    {
        printf("暂时只可以选择加减乘除哦\n");
    }
    return 0;
}
//加法
int add(int num1,int num2)
{
    return num1+num2;
}
//减法
int reduce(int num1,int num2)
{
    return num1-num2;
}
//乘法
int multiply(int num1,int num2)
{
    return num1*num2;
}
//除法,考虑除数不可为0
int divide(int num1,int num2)
{
    if(num2 != 0)
    {
        return num1/num2;
    }
    else
    {
        printf("除数不可以为0\n");
        return 0;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值