gpt4 book ai didi

c - 循环数组会导致我的程序崩溃

转载 作者:行者123 更新时间:2023-11-30 20:01:14 25 4
gpt4 key购买 nike

我编写了一些程序来查看 7*7 的表格,由......这是工作,但由于某种原因,程序在程序结束时崩溃了。我的编译器是 GCC,我使用的是 C99。

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <string.h>
#define LENGTH 7

void printsTable(int arr[LENGTH][],int len);

int main()
{
int table[LENGTH][LENGTH] = {0};
int i = 0, j = 0;
for(j = 1; j <= LENGTH; j++)
{
for(i = 1; i <= LENGTH; i++)
{
table[j][i] = pow(j,i);
}
}
printsTable(table,LENGTH);
return 0;
}

void printsTable(int arr[][LENGTH],int len)
{
int i = 0, j = 0;
for(i = 1; i <= LENGTH; i++)
{
for(j = 1; j <= LENGTH; j++)
{
printf("%d\t", arr[i][j]);
}
printf("\n");
}
}

最佳答案

fors是不正确的。索引从 0 开始不是来自1 ,在 数组,还有矩阵。

使用<=您正在寻址越界,属于 UB ,因为 i 的最后一个循环for 将指向table[j][7] ,以及 j 的最后一个循环将指向table[7][i] 。所有这些地址都在表分配空间之外,从table[0][0]开始。至table [6][6] .

您应该按如下方式更正您的代码

for(j = 0; j < LENGTH; j++)
{
for(i = 0; i < LENGTH; i++)
{
table[j][i] = pow(j,i);
}
}

或者,但不推荐,

for(j = 1; j <= LENGTH; j++)
{
for(i = 1; i <= LENGTH; i++)
{
table[j-1][i-1] = pow(j,i);
}
}

printsTable 也是如此函数循环。

关于c - 循环数组会导致我的程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134344/

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