gpt4 book ai didi

c - 二维数组的空指针异常

转载 作者:行者123 更新时间:2023-11-30 15:31:09 24 4
gpt4 key购买 nike

我认为任何地方都存在空指针异常,但我没有找到它。这是我的代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
#include <string>
#include <vector>

using namespace std;
int a = GetPrivateProfileInt("general","X",10,"./test.ini");
int b = GetPrivateProfileInt("general","Y",10,"./test.ini");

void random_array(int **A, int X, int Y) {...}
void array_anzeigen(int **arr, int X, int Y) {...}
void neues_array(int **A, int X, int Y)
{
int **array1=NULL;
array1 = (int **) malloc(a*sizeof(int *));
for (int i=0;i<a;i++)
array1[i] = (int *) malloc(b*sizeof(int));
const int S = sizeof(array1);
const int T = sizeof(array1);

int temp[S][T];
for(int i = 0; i < Y; i++)
{
for(int j = 0; j < X; j++)
{
temp[i][j] = A[i][j];
}
}

int maske[S][T];
for(int i = 0; i < Y; i++)
{
for(int j = 0; j < X; j++)
{
maske[i][j] = 0;
}
}

for(int i = 0; i < Y; i++)
{
for(int j = 0; j < X; j++)
{
if(temp[i-1][j-1] == 1 && i > 0 && j > 0) ++maske[i][j];
if(temp[i ][j-1] == 1 && j > 0) ++maske[i][j];
if(temp[i-1][j ] == 1 && i > 0 ) ++maske[i][j];
if(temp[i-1][j+1] == 1 && i > 0 && j + 1 < X) ++maske[i][j];
if(temp[i ][j+1] == 1 && j + 1 < X) ++maske[i][j];
if(temp[i+1][j ] == 1 && i + 1 < Y ) ++maske[i][j];
if(temp[i+1][j-1] == 1 && i + 1 < Y && j > 0) ++maske[i][j];
if(temp[i+1][j+1] == 1 && i + 1 < Y && j + 1 < X) ++maske[i][j];

if(maske[i][j] > 3 || maske[i][j] < 2)
A[i][j] = 0;
else if(maske[i][j] == 3)
A[i][j] = 1;
}
}
}

int main()
{
int **array1=NULL;
array1 = (int **) malloc(a*sizeof(int *));
for (int i=0;i<a;i++)
array1[i] = (int *) malloc(b*sizeof(int));

const int X = a;
const int Y = b;

srand((unsigned int) time(NULL));
random_array(array1, X, Y);

int runde = 1;
while(getchar())
{
neues_array(array1, X, Y);
printf(" Runde %i\n", runde);
array_anzeigen(array1, X, Y);

++runde;
}

return 0;

}

VB2012说,异常在下面几行:

for(int i = 0; i < Y; i++)
{
for(int j = 0; j < X; j++)
{
temp[i][j] = A[i][j];
}
}

我是德国人,我的书面英语大多很糟糕,但我想,你明白我的意思。

最佳答案

S 和 T 具有相同的值,因为您使用 sizeof(array1) 初始化它们。但不同维度的大小由变量 a 和 b 给出,您应该使用它们来定义数组。否则你就会超出数组范围。

关于c - 二维数组的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25032852/

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