我试图创建和打印矩阵,但我发现了分段错误。
int** init_dynamic_matrix (int l, int c);
void print_dynamic_matrix (int** ppints, int l, int c);
int main ()
{
int** ppints = NULL;
int l = 6, c = 3;
ppints = init_dynamic_matrix (l, c);
print_dynamic_matrix (ppints, l, c);
return 0;
}
int** init_dynamic_matrix (int l, int c)
{
int i = 0, j = 0;
int** ppaux = NULL;
ppaux = (int**) malloc (l * (sizeof (int*)));
for (i = 0; i < l; i++)
{
*(ppaux + i) = (int*) malloc (c * (sizeof (int)));
for (j = 0; j < c; j++)
{
ppaux[l][c] = 0;
}
}
return ppaux;
}
void print_dynamic_matrix (int** ppints, int l, int c)
{
int i = 0, j = 0;
for (i = 0; i < l; i++)
{
for (j = 0; j < c; j++)
{
printf ("%d", ppints[l][c]);
}
printf("\n");
}
}
答案 0 :(得分:0)
for (j = 0; j < c; j++)
{
ppaux[l][c] = 0;
}
这是错误:在外部for
循环的第一次迭代中,您将执行此操作,但ppaux[l]
尚未初始化,因此您会出现分段错误。
你可能意味着:
for (j = 0; j < c; j++)
{
ppaux[i][j] = 0;
}
因为您刚刚创建了矩阵的i
行,并且想要将其设置为0