c语言指向函数的指针和返回指针的函数

//
//  main.c
//  c指针
//
//  Created by stevenchang on 9/4/15.
//  Copyright (c) 2015 cz. All rights reserved.
//

#include <stdio.h>

void printfArray(int array[]);   //声明一个函数,用于打印数组元素
char *returnName();     //返回一个字符串类型
int *returnArray();     //返回一个数组

void printfValue();
int sum(int a, int b);

int main(int argc, const char * argv[]) {
    /**
     返回指针的函数
     */
    char *name = returnName();
    printf("name=%s\n", name);
    
    int *p = returnArray();
    //如果将下面两行注释打开,那么只能输出p[0]的值,后面全部为0
    //通过测试,可以知道p[1],p[2]的值被释放;这个还有待验证
//    printf("%d\n",p[0]);
//    printf("%d\n",p[1]);
    printf("%d\n",p[2]);    //是可以拿到数组的元素值
    
    
    /**
     指向函数的指针
     */
    //定义一个指针变量指向函数
    void (*p1)();    //void 代表指针变量p所指向的函数返回值为void,(*p1)这是固定写法不可变,()代表指针变量指向的函数参数为空
    p1 = printfValue;    //变量p1指向函数printfValue
    printfValue();   //传统做法
    (*p1)();    //使用指针
    p1();    //使用指针,简洁方法
    
    int (*p2)(int a ,int b);     //int代表指针变量p2所指向的函数返回值为int,(*p2)固定写法不可变,(int a,int b)代表指针变量p2所指向的函数的参数
    p2 = sum;   //将指针变量指向sum函数
    int c1 = sum(10, 24);
    int c2 = (*p2)(23,4);
    int c3 = p2(34,34);
    printf("c1 is %d\n",c1);
    printf("c2 is %d\n",c2);
    printf("c3 is %d\n",c3);
    return 0;
}

void printfValue() {
    printf("adfafafas\n");
}

int sum(int a , int b) {
    return a + b;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值