【发布时间】:2017-02-27 04:59:07
【问题描述】:
我正在尝试创建一个连接 2 个数组然后返回 sum 数组的函数。 我一直在使用以下代码:
#include "stdio.h";
struct array {
int length;
int *array;
};
struct array add(struct array a, struct array b) {
int length = a.length + b.length;
int sum[length];
for (int i = 0; i < length; ++i) {
if (i < a.length) {
sum[i] = a.array[i];
} else {
sum[i] = b.array[i - a.length];
}
}
struct array c;
c.length = length;
c.array = sum;
return c;
}
int main() {
int a[] = {1, 2, 3};
struct array s1;
s1.array = a;
s1.length = sizeof(a) / sizeof(a[0]);
int b[] = {4, 5, 6};
struct array s2;
s2.array = b;
s2.length = sizeof(b) / sizeof(b[0]);
struct array sum = add(s1, s2);
for (int i = 0; i < sum.length; ++i) {
printf("%d\n", sum.array[i]);
}
return 0;
}
输出是: 1、 17, 6356568, 1959414740, 1、 1959661600
我做错了什么?
【问题讨论】:
-
将指针返回到本地数组根本无法正常工作。您必须使用
malloc()或其他方式分配空间。