读书人

这句话如何理解

发布时间: 2012-02-09 18:22:27 作者: rapoo

这句话怎么理解
请问下面这句话该怎么理解:

typedef int (getpopat)(char* test_rspfile,char* lsr_rspfile,char* test_popatfile);

[解决办法]
定义一个函数类型的别名,一般用
typedef int (*getpopat)(char* test_rspfile,char* lsr_rspfile,char* test_popatfile);
形式。
关键是你现在学过了指向函数的指针没有。

[解决办法]
在你的
'typedef int (getpopat)(char* test_rspfile,char* lsr_rspfile,char* test_popatfile); '
中:

假定去掉typedef,并在名字 'getpopat '前加一个 '* ',例如:

int (*getpopat)(char* test_rspfile,char* lsr_rspfile,char* test_popatfile);

我假定你已经学习过函数指针,则上述语句不难理解:

名字 'getpopat '是一个函数指针,其所可以寻址的函数原型是一个有三个字符指针参数(当然是test_rspfile、lsr_rspfile及tes_popatfile),返回值为int型的非常型函数!

例如,有函数:

int show(char* c1,char* c2,char* c3){ return 0;}//纯演示!

则可以:

getpopat = show;//声明一个名字为getpopat的函数指针,为函数指针赋值;
char a = 'a ';
char b = 'b ';
char c = 'c ';

(getpopat)(a,b,c);//以函数指针调用函数;

重要的是,其中名字 'getpopat '是一个函数指针变量!

但现在加了typedef,且没有加 '* ',如你所言:

typedef int (getpopat)(char* test_rspfile,char* lsr_rspfile,char* test_popatfile);

则名字 'getpopat '不再是一个函数指针变量,而是一个函数原型的别名,即:

getpopat等同于一种函数原型(而不再是一个函数指针变量),这个函数原型就是 "一个有三个字符指针参数(当然是test_rspfile、lsr_rspfile及tes_popatfile),返回值为int型的非常型函数 "!以上面那个演示程序,可以更改如下:

getpopat _pFunc = show;//声明一个getpopat类型的指针;
//当然getpopat类型是我们刚才说了n遍的那个函数类型。

char a = 'a ';
char b = 'b ';
char c = 'c ';

(_pFunc)(a,b,c);//以函数指针调用函数;

////////////////////////////////////////////////////////

所以你的问题的正解,就是:

typedef int (getpopat)(char* test_rspfile,char* lsr_rspfile,char* test_popatfile);

该语句声明了一个函数原型的别名getpopat!







[解决办法]
楼上的这句有错《getpopat _pFunc = show;//声明一个getpopat类型的指针;》
应该是getpopat *_pFunc=show;少了个*符号,否则会提示重载
[解决办法]
不好意思,打漏了,谢谢提醒!
[解决办法]
可以揭帖了
[解决办法]
完全同意

读书人网 >C++

热点推荐