跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • [C++] typedef 指针函数问题
未分類
29 5 月 2020

[C++] typedef 指针函数问题

[C++] typedef 指针函数问题

資深大佬 : ligiggy 1

自己瞎写了一段代码,如下:

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; 

搜不到一个比较合理的解释,请大佬赐教!

大佬有話說 (22)

  • 資深大佬 : loriann

    c 是什么? 没看懂

  • 主 資深大佬 : ligiggy

    @loriann c 是定义的变量名啊

  • 資深大佬 : loriann

    c 是什么类型的变量呢?

  • 主 資深大佬 : ligiggy

    @loriann pFunc 啊

  • 資深大佬 : AlohaV2

    typedef 返回值类型 (*函数名字)(参数…)
    建议主早日用上 c++11,std::function 好用一些.

  • 主 資深大佬 : ligiggy

    @AlohaV2 你这个也不对啊,不是函数指针。

  • 資深大佬 : loriann

    哎,真是上火。怀疑自己多年 c++是不是喂了狗了。你可以这样用 pFunc* c = func1

  • 主 資深大佬 : ligiggy

    @loriann 卧槽好像是的。我的 c++喂了狗

  • 資深大佬 : TaylorJack123

    你这 typedef 写错了,应该是 char* (*pFunc)(char*);

  • 資深大佬 : soy

    https://gist.github.com/ZikiSoy/394abf58cab924a4497c6755ddefeefe

  • 主 資深大佬 : ligiggy

    @TaylorJack123 凭什么说我写错了?

  • 主 資深大佬 : ligiggy

    @soy 666666666666

  • 資深大佬 : SPACELAN

    还可以这样写

    char* (*c)(char*) = func1;

    懂我的意思吧

  • 主 資深大佬 : ligiggy

    @SPACELAN 懂

  • 資深大佬 : pright

    主这样写也没问题的,你把那个括号去掉就好理解了。
    pFunc *c;

  • 資深大佬 : pright

    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);

  • 資深大佬 : pright

    http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf

  • 主 資深大佬 : ligiggy

    @pright 嗯,谢谢指教。已经悟到了。这么些年白学了,偶然发现自己几年前写的博客,竟然看不懂了。

  • 資深大佬 : ashong

    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;
    }
    “`

  • 資深大佬 : livepps

    pFunc 要声明指针函数吧,声明有问题

  • 資深大佬 : levelworm

    这是函数吧?
    还有,我绝逼在之前看到完全一样的问题,deja vu,这是怎么了!

  • 資深大佬 : TaylorJack123

    @ligiggy 我错了,恭喜你写对了^_^

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具