【发布时间】:2014-06-17 19:19:01
【问题描述】:
是否可以在不先声明/定义的情况下将数组发送到 C 函数?
这对于整数是可能的。
int add(int a, int b) {
return (a + b);
}
void main(void) {
int c;
int a=1, b=2;
/* With declaring (works fine)*/
c = add(a, b);
/* Without declaring (works fine)*/
c = add(1, 2);
}
数组有什么类似的吗?
#include <stdio.h>
void print_int_array(int *array, int len) {
int i;
for (i = 0; i < len; i++)
printf("%d -> %d\n", i, *array++);
}
void main(void) {
int array[] = {1, 1, 2, 3, 5};
/* With declaring (works just fine) */
print_int_array(array, 5);
/* Without declaring (fails to compile) */
print_int_array({1, 1, 2, 3, 5}, 5);
}
【问题讨论】:
-
很好地提出了第一个问题,除了它是重复的。为了更深入地挖掘,IMO
print_int_array(int *array, int len)的示例不是对“复合文字”的良好使用,因为应该以最小的相互依赖性来调用这样的函数,如print_int_array(array, sizeof array/sizeof array[0]);不确定如何在这里使用复合文字.
标签: c arrays declaration