A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1.指针函数
        返回值是一个指针的函数
       
        #include<stdio.h>
        //定义一个指针函数,返回值是指针类型
  1. int *max(int *x,int *y){
  2.                 return *x>*y?x:y;
  3.         }
  4.         int main(int argc,const char *argv[]){
  5.         int a=3,b=4;
  6.         //地址传递
  7.         int *p=max(&a,&b);
  8.         printf("p的地址是%p,值是%d",p,*p);
复制代码

        思考 : 通过指针函数,输入一个1-7之间的整数,输出对应的星期名
               
  1. #include <stdio.h>

  2. //定义一个指针函数

  3. char *week(char *arr[],int d){
  4.     char *w;
  5.     switch (d) {
  6.         case 1:
  7.             w = arr[0];
  8.             break;
  9.         case 2:
  10.             w = arr[1];
  11.             break;
  12.         case 3:
  13.             w = arr[2];
  14.             break;
  15.         case 4:
  16.             w = arr[3];
  17.             break;
  18.         case 5:
  19.             w = arr[4];
  20.             break;
  21.         case 6:
  22.             w = arr[5];
  23.             break;
  24.         case 7:
  25.             w = arr[6];
  26.             break;
  27.         default:
  28.             break;
  29.     }
  30.     return w;
  31. }

  32. int main(int argc,const char *argv[]){
  33.     char *ar[]={
  34.         "星期一",
  35.         "星期二",
  36.         "星期三",
  37.         "星期四",
  38.         "星期五",
  39.         "星期六",
  40.         "星期日"
  41.     };
  42.     int day=0;
  43.     printf("请输入一个星期数\n");
  44.     scanf("%d",&day);
  45.     printf("%s\n",week(ar, day));
复制代码

}2.函数指针
        把指向函数首地址的指针称为函数指针变量。
        格式:(返回值类型(*变量名)(函数参数));
       
  1.         #include<stdio.h>
  2.         int sum(int a,int b){
  3.                 return a+b
  4.         }
  5.         int main(int argc,const char *argv[]){
  6.                 //匿名参数名
  7.                 int (*p)(int,int);
  8.                 p=sum;
  9.                 printf("a+b=%d",p(34,23));
  10.                 return 0;
复制代码

3.指针变量作为函数的参数
        思考:求10个数的最大值
  1. #include <stdio.h>
  2. char max(int a[],int len){
  3.     int maxNum=a[0];
  4.     for (int i=1; i<len; i++) {
  5.         if (a[i]>maxNum) {
  6.             maxNum=a[i];
  7.         }
  8.         
  9.     }
  10.     return maxNum;   
  11. }

  12. int main(int argc,const char *argv[]){
  13.     int ar[]={1,3,6,7,1,4,6,9,2,4};
  14.     int *p=ar;
  15.     //将指针作为参数传递到max函数的形参
  16.     printf("最大值是%d\n",max(p,10));      
  17. }
复制代码

2 个回复

倒序浏览
不错,学习学习,值得借鉴
回复 使用道具 举报
不错,学习了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马