自己瞎写了一段代码,如下:
typedef char* pFunc(char*);
char* func1(char * p)
{
	cout << p << endl;
	return p;
}
int main()
{
	pFunc (*c);
	c = func1;
	c("123");
}
这样使用的时候是 OK 的。
但是不能这样初始化一个变量,VC++编译器会提示:“=”不是左操作数
pFunc(c);
c = func1;
也不能这样
pFunc c;
c = func1;
搜不到一个比较合理的解释,请大佬赐教!
|      1loriann      2020-05-29 17:31:14 +08:00 c 是什么? 没看懂 | 
|      3loriann      2020-05-29 17:34:55 +08:00 c 是什么类型的变量呢? | 
|  |      5AlohaV2      2020-05-29 17:38:59 +08:00 via iPhone typedef 返回值类型 (*函数名字)(参数...) 建议楼主早日用上 c++11,std::function 好用一些. | 
|      7loriann      2020-05-29 17:44:42 +08:00 哎,真是上火。怀疑自己多年 c++是不是喂了狗了。你可以这样用 pFunc* c = func1 | 
|  |      9TaylorJack123      2020-05-29 17:56:51 +08:00 via iPhone 你这 typedef 写错了,应该是 char* (*pFunc)(char*); | 
|      10soy      2020-05-29 17:57:46 +08:00  1 | 
|  |      11ligiggy OP @TaylorJack123 凭什么说我写错了? | 
|  |      13SPACELAN      2020-05-29 18:02:09 +08:00 还可以这样写 char* (*c)(char*) = func1; 懂我的意思吧 | 
|  |      15pright      2020-05-29 18:10:47 +08:00 楼主这样写也没问题的,你把那个括号去掉就好理解了。 pFunc *c; | 
|  |      16pright      2020-05-29 18:12:09 +08:00 EXAMPLE 4 On the other hand, typedef names can be used to improve code readability. All three of the following declarations of the signal function specify exactly the same type, the first without making use of any typedef names. typedef void fv(int), (*pfv)(int); void (*signal(int, void (*)(int)))(int); fv *signal(int, fv *); pfv signal(int, pfv); | 
|  |      17pright      2020-05-29 18:12:16 +08:00 | 
|  |      18ligiggy OP @pright 嗯,谢谢指教。已经悟到了。这么些年白学了,偶然发现自己几年前写的博客,竟然看不懂了。 | 
|  |      19ashong      2020-05-29 18:40:51 +08:00 typedef 格式不对 ``` typedef char* (*pFunc)(char*); char* func1(char * p) { std::cout << p << std::endl; return p; } int main() { pFunc c; c = func1; c("123"); return 0; } ``` | 
|      20livepps      2020-05-29 18:41:49 +08:00 via Android pFunc 要声明指针函数吧,声明有问题 | 
|  |      21levelworm      2020-05-29 21:08:51 +08:00 via Android 这是函数吧? 还有,我绝逼在之前看到完全一样的问题,deja vu,这是怎么了! | 
|  |      22TaylorJack123      2020-05-30 14:43:21 +08:00 via iPhone @ligiggy 我错了,恭喜你写对了^_^ |