You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函数指针二维数组声明后无法调用函数问题咨询

问题原因与解决方法

你的代码里只是引用了函数指针,但没有触发函数调用操作。C语言中,要调用函数指针指向的函数,必须使用()运算符。

问题细节

你写的ptr[0][0];这类语句,仅仅是对函数指针表达式进行求值,并不会执行对应的函数。要执行函数,必须在指针后加上(),哪怕函数没有参数也要保留空括号。

修正后的代码

#include <stdio.h>

void test1(){ printf("test1\n"); }
void test2(){ printf("test2\n"); }
void test3(){ printf("test3\n"); }
void test4(){ printf("test4\n"); }

void (*hv_ptr[2])() = {test1,test2};
void (*dev_ptr[2])() = {test3,test4};

void (**ptr[2])() = {hv_ptr, dev_ptr};

int main() {

   ptr[0][0](); // 调用test1
   ptr[0][1](); // 调用test2
   ptr[1][0](); // 调用test3
   ptr[1][1](); // 调用test4

   return 0;
}

补充说明

  • ptr[0][0]获取到的是指向test1的函数指针,加上()后,编译器才会执行该指针指向的函数体。
  • 对于无参数的函数,调用时的()不能省略,这是C语言函数调用的语法要求。

内容的提问来源于stack exchange,提问作者user12716429

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 15:34:43