gpt4 book ai didi

c - 为什么这个 C 代码会出现段错误?

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

我一直在这段代码中遇到段错误:

#include <stdio.h> 

void FillArray(int *array, int);
#define MAX 256

int main()
{
int *array[MAX], size = 100;
FillArray(*array, size);
return 0;
}

void FillArray(int *array, int size)
{
int i, temp;
for (i = 0; i < size; i ++)
{
temp = (rand()%101);
*array = temp;
printf ("array[%d]. %d\n", i, *array);
array += i;
}
printf ("AJGIUEROGUSHFDJGJDFK/n");
}

我把 printf 放在最后一行,这样我就可以知道它是否会到达那个点,到目前为止还没有。

编辑:我添加了代码。我必须使用指针运算而不是数组索引。

最佳答案

main 中的array 声明为int * 指针数组。该数组未初始化,即所有元素都包含垃圾值。

main 中对 FillArray 调用分层

FillArray(*array, size);

*array 的值传递给 FillArray 函数。 *arrayarray[0] 相同 - 它是一个指向任何地方的未初始化的垃圾指针。

FillArray 函数中,您正试图通过未初始化的垃圾指针访问(和写入)数据。不出所料,代码崩溃了。

与无效代码的情况一样,在您解释您要执行的操作之前,无法修复错误。

我只能猜测您所需要的只是一个int 元素数组,而不是int * 元素数组。 IE。 main 中的 array 应该声明为 int array[MAX]。并且 FillArray 应该被称为 FillArray(array, size)。此外,在循环内它应该是 array += 1(或只是 ++array),而不是你的 array += i,这没有任何意义。

关于c - 为什么这个 C 代码会出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21710390/

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