02-指针与函数
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 函数指针是一个指向函数指针可被多次赋值,用来指向不同的函数。
3.调用 (*指针变量名)(实参列表) (*p)(x,y); 等价于 function(x,y);
例 指向函数的指针变量程序举例
#include<stdio.h>
int f(int x);
{ return 3*x*x+5*x-7; }
C语言程序设计
指针与函数
1
指针与函数 返回指针值的函数 定义格式: 类型名 *函数名(参数表);
函数返回的指针指向的数据类型
例:int *f(int x, int y); f 是函数名,调用它能返回一个指向整型的指针
例 返回指针值的函数
char *myStrcpy(char *s1,char *s2) { char *p=s1; /*指向目标字符串*/
1.定义形式
类型说明符 (*变量名)( );
例:int (*p)( );
(*变量名)表示该变量名被定义为指针变量,其后的空括 号()表示指针变量所指向的是一个函数。类型说明符
定义了该函数的返回值的类型。
2.赋值 变量名=函数名
例:int (*p)( );
int function(); /*p为指向函数的指针变量*/ p=function;
2000 2002 2004 2006 2008 200A
…...
(main) 2 3
20*0*2
(f1) 2000
2002
变量a 变量b 指针变量p
指针变量x 指针变量y
指向函数的指针
C语言中,每个函数在编译时都给分配了一段连续的 内存空间和一个入口地址,该入口地址就是指向函数的 指针,简称函数指针;可定义一个变量来存储该指针, 即为指向函数的指针变量。
int *f1(int *x,int *y); void main() { int a=2,b=3;
int *p; p=f1(&a, &b); printf("%d\n",*p); }
int *f1(int *x,int*y) {
if(*x>*y) return x;
else return y;
}
COPY
9. int **p; p是一个指向整型指针变量的指针变量;
9
8
指针的各类符号总结
1. int i;
定义整型变量i;
2. int *p;
定义指向整型的指针变量p ;
3. int p[n]; 4.int *p[n]; 5. int (*p)[n];
6. int p( ) ; 7. int *p( ); 8. int (*p)( );
定义一维整型数组p,它有n个整型元素; 定义一个指针数组p,它有n个指向整型变量的指针元素 定义一个指向分数组的指针变量p,*p数组含有n个整型元素 p为返回整型函数值的函数; p为返回一个指针的函数,该指针指向整型数据; p为指向函数的指针变量,该函数返回一个整型值;
while(*s1++=*s2++); return(p); /*返回目标字符串的指针*/ } void main() { char s[20]= "I am a student."; printf("%s\n",myStrcpy(s,"You are a teacher.")); }
例 写一个函数,求两个整型变量中较大值的变量的地址
max(int x,int y) { printf(“max=”);
return(x>y?x:y); } min(int x,int y) { printf(“min=”);
return(x<y?x:y); } add(int x,int y) { printf(“sum=”);
return(x+y); }
}
7
用指向函数的指针变量作函数参数 例 用函数指针变量作参数,求最大值、最小值和两数之和
void main() { int a,b,max(int,int),
min(int,int),add(int,int); void process(int,int,int (*fun)()); scanf("%d,%d",&a,&b); process(a,b,max); process(a,b,min); process(a,b,add); } void process(int x,int y,int(*fun)()) { int result; result=(*fun)(x,y); printf("%d\n",result); }
void main()
{ int (*p)( ); /* 定义p为指向函数的指针变量*/
int a,y;
p=f;
/* 对指向函数的指针变量p赋值*/
printf("input x= ");
scanf("%d",&a);
y=(*p)(a); /* 用函数指针变量形式调用函数, 相当于y=f(a) */ printf("y=%d\n ",y);
3.调用 (*指针变量名)(实参列表) (*p)(x,y); 等价于 function(x,y);
例 指向函数的指针变量程序举例
#include<stdio.h>
int f(int x);
{ return 3*x*x+5*x-7; }
C语言程序设计
指针与函数
1
指针与函数 返回指针值的函数 定义格式: 类型名 *函数名(参数表);
函数返回的指针指向的数据类型
例:int *f(int x, int y); f 是函数名,调用它能返回一个指向整型的指针
例 返回指针值的函数
char *myStrcpy(char *s1,char *s2) { char *p=s1; /*指向目标字符串*/
1.定义形式
类型说明符 (*变量名)( );
例:int (*p)( );
(*变量名)表示该变量名被定义为指针变量,其后的空括 号()表示指针变量所指向的是一个函数。类型说明符
定义了该函数的返回值的类型。
2.赋值 变量名=函数名
例:int (*p)( );
int function(); /*p为指向函数的指针变量*/ p=function;
2000 2002 2004 2006 2008 200A
…...
(main) 2 3
20*0*2
(f1) 2000
2002
变量a 变量b 指针变量p
指针变量x 指针变量y
指向函数的指针
C语言中,每个函数在编译时都给分配了一段连续的 内存空间和一个入口地址,该入口地址就是指向函数的 指针,简称函数指针;可定义一个变量来存储该指针, 即为指向函数的指针变量。
int *f1(int *x,int *y); void main() { int a=2,b=3;
int *p; p=f1(&a, &b); printf("%d\n",*p); }
int *f1(int *x,int*y) {
if(*x>*y) return x;
else return y;
}
COPY
9. int **p; p是一个指向整型指针变量的指针变量;
9
8
指针的各类符号总结
1. int i;
定义整型变量i;
2. int *p;
定义指向整型的指针变量p ;
3. int p[n]; 4.int *p[n]; 5. int (*p)[n];
6. int p( ) ; 7. int *p( ); 8. int (*p)( );
定义一维整型数组p,它有n个整型元素; 定义一个指针数组p,它有n个指向整型变量的指针元素 定义一个指向分数组的指针变量p,*p数组含有n个整型元素 p为返回整型函数值的函数; p为返回一个指针的函数,该指针指向整型数据; p为指向函数的指针变量,该函数返回一个整型值;
while(*s1++=*s2++); return(p); /*返回目标字符串的指针*/ } void main() { char s[20]= "I am a student."; printf("%s\n",myStrcpy(s,"You are a teacher.")); }
例 写一个函数,求两个整型变量中较大值的变量的地址
max(int x,int y) { printf(“max=”);
return(x>y?x:y); } min(int x,int y) { printf(“min=”);
return(x<y?x:y); } add(int x,int y) { printf(“sum=”);
return(x+y); }
}
7
用指向函数的指针变量作函数参数 例 用函数指针变量作参数,求最大值、最小值和两数之和
void main() { int a,b,max(int,int),
min(int,int),add(int,int); void process(int,int,int (*fun)()); scanf("%d,%d",&a,&b); process(a,b,max); process(a,b,min); process(a,b,add); } void process(int x,int y,int(*fun)()) { int result; result=(*fun)(x,y); printf("%d\n",result); }
void main()
{ int (*p)( ); /* 定义p为指向函数的指针变量*/
int a,y;
p=f;
/* 对指向函数的指针变量p赋值*/
printf("input x= ");
scanf("%d",&a);
y=(*p)(a); /* 用函数指针变量形式调用函数, 相当于y=f(a) */ printf("y=%d\n ",y);