gpt4 book ai didi

c - 线程 1 : EXC_BAD_ACCESS(code = 1, 地址 = 0x7fff00000001)

转载 作者:太空宇宙 更新时间:2023-11-04 07:29:17 25 4
gpt4 key购买 nike

我试图将一个数组传递给一个对数组中的所有元素求和的函数,但是我在 sum+=a[i]; 行遇到错误的访问错误怎么办我解决这个?这是代码:

#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;
}

最佳答案

这是因为你的数组大小为0。从 a[i] 写入/读取可能/可能不会崩溃,因为它的行为是未定义的。

代替

int size = 0;
int a[size];
int x;

NSLog(@"Enter a size for the array ");
scanf("%i", &size);

你应该这样做:

int size = 0;
int *a;
int x;

NSLog(@"Enter a size for the array ");
scanf("%i", &size);

a = malloc(sizeof(int) * size);

通过动态分配数组a,您的程序应该不会再崩溃。

并且在我们使用了malloc之后,当我们不再需要它的时候我们必须释放它。把它放在 return 0;

之前
free(a);

希望这对您有所帮助。

关于c - 线程 1 : EXC_BAD_ACCESS(code = 1, 地址 = 0x7fff00000001),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15345770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com