黑马程序员---指向函数的指针与返回指针的函数

来源:互联网 发布:mac风扇一直转 编辑:程序博客网 时间:2024/05/27 20:51
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------


指向函数的指针(函数指针变量)
c语言中,函数名就是该函数所占内存区的首地址。可以把函数的这个首地址赋予给一个指针变量,使该指针变量指向该函数。然后通过指针变量就可以找到并调用这个函数。
函数指针变量定义的一般形式为:
        类型说明符(*指针变量名)(形参列表);   
形参列表可以完全省略,只留空括号。
类型说明符为 被指函数的返回值的类型。最后的括号表示指针变量所知的是一个函数。
例如
int(*pt)();

使用例子1:
int max(int a,int b)
{
    if(a>b) return a;
    else return b;
}
main()
{
    int max(int a,int b);    声明函数
    int(*pmax)();        定义pmax为函数指针变量
    int x,y,z;
    pmax=max;        函数指针变量赋值
     scanf("%d%d",&x,&y);
    z=(*pmax)(x,y);        用函数指针变量调用函数 
                                     调用形式为(*指针变量名)(形参列表)
    printf("maxmun=%d",z);
}
使用例子2:使用函数指针变量将函数作为参数在函数间传递

#include <stdio.h>
// 减法运算函数
int minus(int a, int b) {
    return a - b;
}
// 加法运算函数
int sum(int a, int b) {
    return a + b;
}
这个counting函数是用来做a和b之间的计算,
至于做加法还是减法运算,由函数的第1个参数决定
void counting( int (*p)(int, int) , int a, int b) {
    int result = p(a, b);
    printf("计算结果为:%d\n", result);
}
int main()
{
    // 进行加法运算
    counting(sum, 6, 4);
    // 进行减法运算
    counting(minus, 6, 4);
    return 0;
}
调用counting函数,把需要进行的运算函数的首地址传递给函数指针变量。之后再调用该运算函数。



返回指针的函数
指针型函数,返回值是一个指针的函数。
一般形式:
            类型说明符*函数名(形参表)
使用例子:
#include <stdio.h>
main()
{    
    int i;
    char *day(int n);   定义返回指针的day函数
    printf("请输入1-7数字:\n"); 
    scanf("%d",&i); 
    printf("%s\n",day(i));   调用day函数 并把i值传给形参n
                                         指向地址改变
}

char *day(int n){        返回的是成员的地址
    char *name[]={"错误",
                              "周一",
                              "周二",
                              "周三",
                              "周四",
                              "周五",
                              "周六",
                               "周日",
                                };
    return((n<1||n>7)?name[0]:name[n]);
}



























返回指针的函数

0 0
原创粉丝点击