自己瞎写了一段代码,如下:
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;
搜不到一个比较合理的解释,请大佬赐教!
1
loriann May 29, 2020
c 是什么? 没看懂
|
3
loriann May 29, 2020
c 是什么类型的变量呢?
|
5
AlohaV2 May 29, 2020 via iPhone
typedef 返回值类型 (*函数名字)(参数...)
建议楼主早日用上 c++11,std::function 好用一些. |
7
loriann May 29, 2020
哎,真是上火。怀疑自己多年 c++是不是喂了狗了。你可以这样用 pFunc* c = func1
|
9
TaylorJack123 May 29, 2020 via iPhone
你这 typedef 写错了,应该是 char* (*pFunc)(char*);
|
10
soy May 29, 2020 |
11
ligiggy OP @TaylorJack123 凭什么说我写错了?
|
13
SPACELAN May 29, 2020
还可以这样写
char* (*c)(char*) = func1; 懂我的意思吧 |
15
pright May 29, 2020
楼主这样写也没问题的,你把那个括号去掉就好理解了。
pFunc *c; |
16
pright May 29, 2020
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); |
17
pright May 29, 2020
|
19
ashong May 29, 2020
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; } ``` |
20
livepps May 29, 2020 via Android
pFunc 要声明指针函数吧,声明有问题
|
21
levelworm May 29, 2020 via Android
这是函数吧?
还有,我绝逼在之前看到完全一样的问题,deja vu,这是怎么了! |
22
TaylorJack123 May 30, 2020 via iPhone
@ligiggy 我错了,恭喜你写对了^_^
|