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));
- }
复制代码 |
|