关于函数和数组有一个问题。假设我有以下代码:
int example1(unsigned int hold[], size)
{
....
}
在另一个函数中,我想调用我的示例1函数,但不是传递一个数组,而是传递一个整数,如下所示:
int example2(unsigned int hold)
{
int i;
for(i = 0; i < 10; i++)
example1(hold,i);
}
如何使其工作?
你的 example1
函数接受一个指向 int
数组第一个元素的指针。由于单个变量的指针与数组第一个元素的指针本质上是等价的,因此您可以只传递该单个 int
的地址,并将其大小设置为 1:
example(&hold, 1);
int
变量的指针和指向int
数组元素的指针之间没有固有的区别。 - John Bollinger可以将指向值的指针传递到只有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);
}
example1
函数定义。传递&i, 1
不会传递一个数组(当作参数传递时,数组被转换为指针的事实在这里是一个误导)。 - David C. Rankin
hold
作为一个元素数组传递吗?如果是这样,那么您的调用应该是example1(&hold, 1);
。或者您是想创建一个包含来自hold
值的一个元素的i
元素数组吗?还是您正在尝试创建一个所有元素都设置为hold
的i
元素数组?请使用标签下方的“编辑”按钮编辑问题 - 不要将其他信息放入评论中,因为它可能会被忽略 - 并澄清您要尝试做什么。谢谢。 - Bob Jarvis - Слава Україні