有关于函数和数组的问题。假设我有这个
int example1(unsigned int hold[], size)
{
....
}
然后在另一个函数中我想调用我的示例1函数但不是传递数组我想传递一个整数,所以像这样
int example2(unsigned int hold)
{
int i;
for(i = 0; i < 10; i++)
example1(hold,i);
}
我将如何使其发挥作用
答案 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);