(C)调用函数时,在数组中存储多个值

时间:2017-03-31 02:28:13

标签: c

因此,在调用函数时,我希望将两个值放入,然后将这两个值保存在函数参数的数组中。

function(1,2); (calling the function)

void function(int x[2]); (declaration of function)

x [0]和x [1]是调用函数时的两个参数(即1和2)。

任何帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

如果你有两个数组成员但没有数组,并且希望调用这样一个函数,你可以使用复合文字:

void function(int x[2]);     // declaration of function

function((int [2]) {1, 2});  // calling the function

您还可以在复合文字中使用变量。这是一个简单的示例程序:

#include <stdio.h>

void function(int x[2]);

int main(void)
{
    int arg1 = 3;
    int arg2 = 4;

    puts("Calling function with constants in compound literal:");
    function((int [2]) {1, 2});

    puts("Calling function with variables in compound literal:");
    function((int [2]) {arg1, arg2});

    return 0;
}

void function(int x[2])
{
    printf("x[0] = %d, x[1] = %d\n", x[0], x[1]);
}

节目输出:

Calling function with constants in compound literal:
x[0] = 1, x[1] = 2
Calling function with variables in compound literal:
x[0] = 3, x[1] = 4

答案 1 :(得分:0)

如果要调用期望数组为2的函数,则传递2个单独的值是不一样的。

尽可能接近:

void function(int x[2]) {....}

void caller(int a, int b)
{
    int args[2] = {a, b};  /* Convert two args into an array */
    function(args);        /* Call the function with an array */
}

int main(void)
{
    caller(1, 2);
}

答案 2 :(得分:0)

也许可变长度参数是你想要的:

void function(int i, ...) { 
    int tmp; 
    va_list num_list; 

    va_start(num_list, i); 

    for(int j = 0; j < i; j++) 
        cout << va_arg(num_list, int) << endl; 

    va_end(num_list); 
}

第一个'i'告诉函数您输入了多少参数。 使用它像:

function(2,3,4); // pass 2 argument, 3 and 4

答案 3 :(得分:0)

功能(1,2); 函数调用将查找type(int,int)的定义。

void function(int x [2]); 此函数参数是数组类型。因此无法通过函数(1,2);

调用该函数