我试图将一个数组传递给一个函数,该函数总结了数组中的所有元素,但是在行sum+=a[i];
处遇到访问错误我解决这个问题?这里是代码:线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x7fff00000001)
#import <Foundation/Foundation.h>
int sum(int*, int);
int main() {
@autoreleasepool {
int size = 0;
int a[size];
int x;
NSLog(@"Enter a size for the array ");
scanf("%i", &size);
NSLog(@"Enter %i numbers to populate the array ", size);
for (int i = 0; i < size; i++) {
scanf("%i", &a[i]);
}
x = sum(a, size);
NSLog(@"The sum of the array is %i ", x);
}
return 0;
}
int sum(int *a, int n) {
int sum = 0;
for (int i = 0; i < n; i++) {
sum += a[i];
}
return sum;
}
@Josh - 你为什么要拉''objective-c'标签来支持'C'?这显然是'objective-c'代码 – Mike 2013-03-11 19:31:00
不是,@Mike - 问题本身完全基于C的内存管理。唯一需要ObjC运行时的是'@ autoreleasepool',由于没有放入ObjC对象,因此它并没有做任何事情。它必须被编译为ObjC,因为它使用了'NSString',但这些与实际问题或解决方案没有关系。这两件事都可以在不影响这段代码的可编译性的情况下被移除,问题将会是一样的,并且正好在C的域中。 – 2013-03-11 19:38:32