gpt4 book ai didi

c - 如何在下面的程序中删除段错误

转载 作者:太空宇宙 更新时间:2023-11-04 06:51:08 24 4
gpt4 key购买 nike

我是编程初学者。什么是段错误以及如何在以下程序中删除它?

下面是一个比较hackerrank中提出的triplets问题。我在尝试运行程序时收到段错误。

int main() {
int a, b, c;
c = points(a, b);
printf("%d", c);
return 0;
}

int points(int a[10], int b[10]) {
int p = 0, q = 0;

for (int i = 0; i < 3; i++) {
printf("%d", a[i]);
scanf("%d", & a[i]);
}
for (int j = 0; j < 3; j++) {

printf("%d", b[j]);
scanf("%d", & b[j]);

}
for (int k = 0; k < 3; k++) {
if (a[k] > b[k]) {
++p;
return p;
} else {
if (a[k] = b[k])
++q;
return q;
}

}
return 0;
}

最佳答案

int a,b,c;
c=points(a,b);

您正在将参数传递给函数而不设置它们的值。请记住,在 C 中,您是按值将参数传递给函数。

 int points(int a[10],int b[10])

此函数需要两个包含十个整数的数组。您只为每个传递了一个整数。

您还应该阅读有关将数组参数传递给函数的内容(如果这是您的意图)。在 C 中,除非将其包装到结构中,否则不能将整个数组传递给函数。您应该只传递第一个数组元素的地址,并以某种方式定义大小。例如:

#define ARRAY_SIZE 10
int foo(int tab[])
{
int i;
for (i = 0; i < ARRAY_SIZE; i++)
tab[i] = do_stuff();
}

int main(void)
{
int tab[ARRAY_SIZE];
foo(tab);
}

您也可以不定义 ARRAY_SIZE 宏,而是将另一个参数传递给定义传递数组大小的函数。

关于c - 如何在下面的程序中删除段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51095769/

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