因此,在调用函数时,我希望将两个值放入,然后将这两个值保存在函数参数的数组中。
即
function(1,2); (calling the function)
void function(int x[2]); (declaration of function)
x [0]和x [1]是调用函数时的两个参数(即1和2)。
任何帮助将不胜感激。
答案 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);
调用该函数