重新理解typedef——用一个名字代替类型;#define——预处理时把小名换成大名。

来源:互联网 发布:php接口token验证 编辑:程序博客网 时间:2024/04/27 14:13

#define xidada xijinping //给xijinping起了个小名xidada以后只要遇到xidada 就会原封不动地替换成xijinping。#define int INT 同理

void hello(void*);// 声明:
类型:void
名字:hello

void (* )(void * ); //类型:表示 传入参数是void * 返回值使void的函数指针。

void (* fun)(void * ); //声明:
类型:传入参数是void * 返回值使void的函数指针。
变量名字:fun

typedef void (* FUN)(void * ) ;//用FUN【名字(判断哪个是名字的方法同声明)】代替void (* )(void * )【类型】

int num;


下面三种方式等价:
1.
hello(&num);

2.
fun = max;
fun (&num);

3.
FUN sayhello;//FUN代表的就是void (* )(void * )【类型】
//上条语句与void (* sayhello)(void * )等价
sayhello(&num);


#include<stdio.h>void hello(void){    printf("hello!\n");    return;}void goodby(void){    printf("goodby!\n");    return;}typedef void (*FUN)(void);void (*ptr_hello)(void);int main(void){    puts("directly:");    hello();    puts("using pointer:");    ptr_hello = hello;    ptr_hello();    puts("typedef:");    FUN function[2];    function[0] = hello;    function[1] = goodby;    //或者直接FUN function[2] = {hello,goodby};    function[0]();    function[1]();    int answer;    FUN call;    puts("1:hello,2:goodby");    do{        scanf("%d",&answer);    }while(answer != 1 && answer != 2);    if(answer == 1)    {        call = function[0];    }    else    {        call = function[1];    }    call();    return 0;}

参考
http://www.xuebuyuan.com/1814447.html

0 0
原创粉丝点击