黑马程序员技术交流社区
标题:
c语言学习心得——函数指针和指针函数
[打印本页]
作者:
vyqrvwgf
时间:
2015-11-2 18:12
标题:
c语言学习心得——函数指针和指针函数
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));
}
复制代码
作者:
xiaobei
时间:
2015-11-2 18:46
不错,学习学习,值得借鉴
作者:
lixp
时间:
2015-11-2 19:45
不错,学习了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2