C 中返回数组?

2023-12-01

我无法在 C 中返回数组,我对 C 很陌生,所以我可能会犯一些有趣的错误,这里是 代码:

#define MAXSIZE 100
int recievedNumbers[MAXSIZE];
void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
}

void loop() {
  // put your main code here, to run repeatedly:
  recievedNumbers = getACOfNumber(256);
  for (int i = 0; i < sizeof(recievedNumbers) / 8; i++) {
    Serial.print(recievedNumbers[i]);
  }
  Serial.println();
}

int* getACOfNumber(int theNumber) {
  bool done = false;
  int i = 0;
  int theArray[100];
  while (!done) {
    if (theNumber % 2 == 0) {
      theNumber = theNumber / 2;
      theArray[i] = 2;
    } else if (theNumber % 3 == 0) {
      theNumber = theNumber / 3;
      theArray[i] = 3;
    }
    else if (theNumber % 5 == 0) {
      theNumber = theNumber / 5;
      theArray[i] = 5;
    }
    else if (theNumber % 7 == 0) {
      theNumber = theNumber / 7;
      theArray[i] = 7;
    } else {
      theArray[i] = theNumber;
      done = true;
    }
    i++;
  }
  return theArray;
}

错误信息 :

AC:10:错误:将“int *”分配给“int”时类型不兼容 [100]'

退出状态 1 将“int*”赋值给“int”时类型不兼容 [100]'


您不能从表达式分配给数组:

int recievedNumbers[MAXSIZE];
...
recievedNumbers = getACOfNumber(256);

Instead:

memcpy(receivedNumbers, getACOfNumber(256), sizeof(receivedNumbers));

请注意,您正在使用其生命周期以该函数结束的本地数组,请更改为

static int theArray[100];

或者更好

int *theArray = calloc(100, sizeof(*theArray)); /* Zero initializes the array */

别忘了打电话free在最后:

int *temp = getACOfNumber(256);

memcpy(receivedNumbers, temp, sizeof(receivedNumbers));
free(temp);

但为什么不将原始数组传递给函数呢?:

getACOfNumber(receivedNumbers);
...
void getACOfNumber(int *theArray) {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C 中返回数组? 的相关文章

随机推荐

  • SortedSet<>.Contains() 如何实现自己的比较?

    我想检查具有给定值的对象是否存在于SortedSet lt gt 但我不明白自定义比较在这里是如何工作的 在List lt gt Exists 我可以只使用 lambda 但我不能在那里这样做 而且我没有得到整个界面的东西 而 msdn 说
  • R 中零值之间向量的元素之和

    我有一个带有零和正数的向量 我只想将这些数字相加between零点 一个简单的例子 x lt c 0 0 0 0 0 1 23 24 54 12 1 23 0 0 0 0 1 23 56 76 0 1 13 也就是说 我想对元素求和1 23
  • 如何让 Chrome 尊重我的字段名称而不是尝试自动完成

    我的主页上有两种不同的表单 一种用于登录 一种用于注册 从代码中可以看出 表单具有不同名称的输入 h3 Log In h3
  • 我可以使用 android.preference 包执行数据库特定操作吗?

    我需要一个数据库 可以在其中存储数据并在需要时获取数据 这可以通过 android preference 包实现吗 我不想使用 sqlite 数据库 regards 根据共享偏好 Android 开发者教程 第 13 部分 作者 Sai G
  • 使用 Electron-packager 时,我们可以在没有安装 Node 的 Mac 上启动 Node 命令吗?

    当我使用电子打包器打包电子应用程序时 该应用程序生成一个使用 node 命令的子进程 现在 如果我尝试在未安装节点的系统中启动我的应用程序 该应用程序可以运行吗 我一直在尝试实现这一目标并面临各种问题 电子社区建议我使用 fork 方法 s
  • avcodec YUV 转 RGB

    我正在尝试使用 libswscale 将 YUV 帧转换为 RGB 这是我的代码 AVFrame RGBFrame SwsContext ConversionContext ConversionContext sws getCachedCo
  • 从c文件中提取头名称的正则表达式

    如何从包含这样的 c 文件中提取标头 include
  • Grunt、NPM 和 Bower 之间的区别(package.json 与 Bower.json)

    当我想添加一个包 并将依赖项签入 git 时 它属于哪里 进入package json或进入bower json 据我收集的信息 跑步bower install将获取包并将其放入 vendor目录 跑步npm install它会获取它并将其
  • 二叉树递归函数

    我需要打印出一个如下所示的二叉树 x x x x x x x x x x x x x x x xxxxxxxxxxxxxxxx 使用递归打印该行的左侧和右侧 第一行除外 因此该函数将调用带有左起点和右终点参数的显示函数 然后它会调用自己两次
  • Docker:如何从给定容器访问另一个容器中的文件?

    基本上我有一个主目录和图书目录 一般文件结构 还有更多 但这些是重要的部分 因此 当我从 main 向 booksServer 发出请求时 它不起作用 因为节点模块丢失 这是因为节点模块位于 docker 容器内的特定路径 usr src
  • 网络个人资料有什么用?

    我偶然发现了这个项目ASP NET Web 配置文件生成器 为什么我需要代理类来访问配置文件 因为 ASP NET 仅支持带有 网站 选项的开箱即用的配置文件 如果您使用的是 Web 应用程序项目 WAP 那么您必须推出自己的项目 问题源于
  • JAX-RS 未能注入 @EJB 或 @Inject

    我正在尝试测试最小的 JAX RS EJB CDI 注入机制 但目前由于 GlassFish 由于某种原因无法注入而遇到了障碍 使用 Inject 将抛出 NPE 因为 GlassFish 无法注入 POJO 我的 beans xml 仅包
  • 使用 Cerberus 验证两个参数具有相同数量的元素

    有没有办法拥有Cerberus验证两个字段是否具有相同数量的元素 例如 该文档将验证 a 1 2 3 b 4 5 6 这不会 a 1 2 3 b 7 8 到目前为止 我已经想出了这个模式 a required False type list
  • Java Double 初始化为 0.0

    我有一个 bean 其中有一个字段 CustAmount 它是双倍的 我尝试测试该 bean 但我似乎不理解这一点 当我在本地计算机上运行时 它在实例化时初始化为 0 0 当我在 Linux 测试环境中运行相同的代码时 它仍然为空 由于检索
  • 如何在mysql中批量插入插入的id

    我试图使用此查询在 mysql 表中插入多行后获取 insertid insert into sometable id candidateid createdby values 61 3175 1425 60 3175 1425 42 31
  • SQL Server 计算切换间隔秒数

    我有一个这样的表 Value TimeStamp 1 2016 04 01 00 01 09 000 0 2016 04 01 00 01 09 000 0 2016 04 01 00 01 37 000 1 2016 04 01 00 0
  • 了解 VB.NET P/Invoke 声明中的 VBByRefStr

    当尝试使用 C 的 VB NET 程序集中创建的 P Invoke 声明时 我注意到string争论变成ref string论据 仔细检查表明 例如 Public Declare Unicode Function RegDeleteValu
  • 为不同的复合组件指定不同的错误消息

    有没有办法为不同类型的复合组件提供 REQUIRED 消息 我希望能够在消息包中说出以下内容 javax faces component UIInput REQUIRED Please enter a value for 0 com ano
  • 如何在 Clion 和 CMake 中添加 allegro 库?

    我正在尝试使用 Clion IDE 编译我的游戏项目 但在移植 allegro 5 时遇到问题 我收到此错误 main cpp 2 10 fatal error allegro allegro h file not found includ
  • C 中返回数组?

    我无法在 C 中返回数组 我对 C 很陌生 所以我可能会犯一些有趣的错误 这里是 代码 define MAXSIZE 100 int recievedNumbers MAXSIZE void setup put your setup cod