如何在n * n个动态分配的矩阵中添加对角线元素?

时间:2019-02-11 17:24:59

标签: c

如果矩阵是这样分配的

int **A, n;
A = (int **)malloc(n * sizeof(int));  
for (i = 0; i < n; i++) {
    A[i] = malloc(n * sizeof(int));
}

上面介绍了如何在矩阵中插入元素以及如何添加对角元素。

2 个答案:

答案 0 :(得分:2)

首先,您需要在此处为​​n整数指针分配空间:

int **A,n;
A=(int **)malloc(n*sizeof(int *));  

提示:通常,您分配分配给的变量类型是指向sizeof()

中指定的对象的指针类型

这里,您输入的类型正确:

for(i=0;i<n;i++){
     A[i]=malloc(n*sizeof(int));
}

现在,您可以像这样分配元素:

A[x][y] = val;

具有0 <= x,y

因此,对角元素为A[i][i],其值为0 <= i

答案 1 :(得分:1)

我认为应该使用将元素初始化为0的calloc版本, 然后添加对角线元素 这是我的解决方案:

int **A,n;
A=(int **)calloc(sizeof(int*), n);  
for(i=0;i<n;i++){
     A[i]=calloc(sizeof(int), n);
}

// Add diagonal elements
for(i=0;i<n;i++){
    A[i][i] = 1; 
}