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

如何将指针函数abc(x,y)存入数组,解决数组类型表达式赋值报错

问题解决

你收到的error: assignment to expression with array type报错主要来自两处代码错误:

  • 你定义的array2是char基础类型,不是数组,不支持array2[i]这种下标访问写法
  • abc函数的返回值为char*指针类型,和char类型不匹配,无法直接存入char类型的变量

根据你实际的需求,分两种实现方案:


方案1:存储abc的返回值(char*字符串指针)到数组

如果你需要的是把每次调用abc得到的返回结果存到数组里,直接定义对应类型的指针数组即可:

char *abc(unsigned int a, unsigned int b)
{
  // 注意:此处返回的char*指向的内存必须合法
  // 禁止返回函数内部定义的局部栈数组地址,会产生野指针
  // 建议返回malloc申请的堆内存、静态字符串或者全局变量地址
  // do something here ...
}

void fun2()
{
  unsigned int x = 5, y = 6;
  int i;
  // 定义长度为3的char*类型数组,用于存储abc的返回值
  char *array2[3];
  for(i = 0; i < 3; i++)
  {
    array2[i] = abc(x, y);
  }
  // 后续可正常通过array2[n]访问存储的指针
}

方案2:存储abc函数指针本身到数组

如果你需要的是把abc这个函数的地址存到数组里,后续通过数组调用该函数,需要定义对应类型的函数指针数组:

char *abc(unsigned int a, unsigned int b)
{
  // do something here ...
}

void fun2()
{
  unsigned int x = 5, y = 6;
  int i;
  // 定义长度为3的函数指针数组,匹配abc的入参和返回值类型
  char* (*func_array[3])(unsigned int, unsigned int);
  for(i = 0; i < 3; i++)
  {
    // 将abc函数的地址存入数组
    func_array[i] = abc;
  }
  
  // 调用示例:通过数组下标调用存储的函数
  char *ret = func_array[0](x, y);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 20:18:04