我需要将一个整数传递给只接受数组的函数

时间:2018-02-09 19:16:50

标签: c arrays function

有关于函数和数组的问题。假设我有这个

int example1(unsigned int hold[], size)
 {
   ....
 }

然后在另一个函数中我想调用我的示例1函数但不是传递数组我想传递一个整数,所以像这样

int example2(unsigned int hold)
{
  int i;

 for(i = 0; i < 10; i++)
    example1(hold,i);
}

我将如何使其发挥作用

3 个答案:

答案 0 :(得分:11)

您的example1函数获取指向int数组的第一个元素的指针。由于指向单个变量的指针基本上等同于指向数组第一个元素的指针,因此您只需传递大小为1的单个int的地址:

example(&hold, 1);

答案 1 :(得分:5)

可以传递一个指向value的指针来代替只有1个元素的数组;你的循环让example1假设一个大于1的数组。

由于您要传递i作为大小,请创建一个i元素数组,使用一些值进行设置,并将其传递给example1,如下所示:

for(size_t i = 0 ; i < 10 ; i++) {
    unsigned int arg[i+1];
    for (size_t j = 0 ; j != i ; j++) {
        arg[j] = value;
    }
    example1(arg, i);
}

答案 2 :(得分:0)

在C99中,您还可以使用compound literal

example1((unsigned int[]){hold}, 1);