【问题标题】:Passing an array as function argument without defining a variable [duplicate]将数组作为函数参数传递而不定义变量[重复]
【发布时间】:2021-04-16 04:18:02
【问题描述】:

我们如何将数组直接传递给 C 中的函数?

例如:

#include <stdio.h>

void function(int arr[]) {};

int main(void) {
    int nums[] = {3, -11, 0, 122};
    function(nums);
    return 0;
}

除了这个,我们可以写function({3, -11, 0, 122});这样的东西吗?

【问题讨论】:

  • 一种选择是将数组包装在结构中:struct foo { int arr[10]; }; struct foo wrapped = {{3, -11, 0, 122}}; fx(wrapped);
  • @pmg 但仍然使用中间变量
  • 啊!没有足够注意阅读问题标题;无论如何在这里留下评论:-)
  • @pmg 先生,这不是您的错,我根据对问题的理解扩展了标题。最初的版本没有提到这一点。道歉。
  • “我们可以写一些类似的东西吗” - 你尝试的时候发生了什么?

标签: arrays c parameter-passing function-call


【解决方案1】:

您可以使用compound literal。类似的东西

function((int []){3, -11, 0, 122});

【讨论】:

  • 我认为其中一个在 C 中有效但在 C++ 中无效的东西。
  • @dxiv:它适用于 C99 及更高版本,但不适用于 C++(还没有?)。
【解决方案2】:

您可以将数组作为复合文字传递,如下所示。

function((int []){3, -11, 0, 122});

【讨论】:

    猜你喜欢
    • 2018-08-30
    • 2021-02-28
    • 2014-08-18
    • 2016-04-01
    • 2011-06-12
    • 1970-01-01
    • 2013-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多