| 
 
| 1.指针函数 返回值是一个指针的函数
 
 #include<stdio.h>
 //定义一个指针函数,返回值是指针类型
 
 复制代码int *max(int *x,int *y){
                return *x>*y?x:y;
        }
        int main(int argc,const char *argv[]){
        int a=3,b=4;
        //地址传递
        int *p=max(&a,&b);
        printf("p的地址是%p,值是%d",p,*p);
思考 : 通过指针函数,输入一个1-7之间的整数,输出对应的星期名
 
 
 复制代码#include <stdio.h>
//定义一个指针函数
char *week(char *arr[],int d){
    char *w;
    switch (d) {
        case 1:
            w = arr[0];
            break;
        case 2:
            w = arr[1];
            break;
        case 3:
            w = arr[2];
            break;
        case 4:
            w = arr[3];
            break;
        case 5:
            w = arr[4];
            break;
        case 6:
            w = arr[5];
            break;
        case 7:
            w = arr[6];
            break;
        default:
            break;
    }
    return w;
}
int main(int argc,const char *argv[]){
    char *ar[]={
        "星期一",
        "星期二",
        "星期三",
        "星期四",
        "星期五",
        "星期六",
        "星期日"
    };
    int day=0;
    printf("请输入一个星期数\n");
    scanf("%d",&day);
    printf("%s\n",week(ar, day));
}2.函数指针
 把指向函数首地址的指针称为函数指针变量。
 格式:(返回值类型(*变量名)(函数参数));
 
 
 复制代码        #include<stdio.h>
        int sum(int a,int b){
                return a+b
        }
        int main(int argc,const char *argv[]){
                //匿名参数名
                int (*p)(int,int);
                p=sum;
                printf("a+b=%d",p(34,23));
                return 0;
}
3.指针变量作为函数的参数
 思考:求10个数的最大值
 
 复制代码#include <stdio.h>
char max(int a[],int len){
    int maxNum=a[0];
    for (int i=1; i<len; i++) {
        if (a[i]>maxNum) {
            maxNum=a[i];
        }
        
    }
    return maxNum;   
}
int main(int argc,const char *argv[]){
    int ar[]={1,3,6,7,1,4,6,9,2,4};
    int *p=ar;
    //将指针作为参数传递到max函数的形参
    printf("最大值是%d\n",max(p,10));      
}
 | 
 |