배열의 모든 요소를 요약하는 함수에 배열을 전달하려고하는데 행에서 잘못된 액세스 오류가 발생합니다. 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
아니요, @Mike - 문제 자체는 C의 메모리 관리를 기반으로합니다. ObjC 런타임이 필요한 유일한 것은'@ autoreleasepool'입니다. ObjC 객체가 없기 때문에 아무 것도하지 않습니다. 문자 그대로 'NSString'때문에 ObjC로 컴파일해야하지만, 실제 문제 나 솔루션에는 아무런 영향이 없습니다. 이 두 가지는이 코드의 컴파일 가능성에 영향을 미치지 않고 제거 될 수 있으며 문제는 C의 도메인과 동일하고 정교합니다. –