Pointers 为什么这不适用于转置矩阵
由于某种原因,元素Pointers 为什么这不适用于转置矩阵,pointers,matrix,transpose,Pointers,Matrix,Transpose,由于某种原因,元素b[m][n]是一个随机数,而不是1。如果我尝试printfa[n][m],也会发生同样的情况。拜托,我需要一些帮助 #include <stdio.h> #include <stdlib.h> void **alloc(int n,int m) { int **x=(int**)malloc(n*sizeof(int*)); for(int i=1; i<=n; i++) x[i] =(int*)malloc(m*
b[m][n]
是一个随机数,而不是1。如果我尝试printfa[n][m]
,也会发生同样的情况。拜托,我需要一些帮助
#include <stdio.h>
#include <stdlib.h>
void **alloc(int n,int m)
{
int **x=(int**)malloc(n*sizeof(int*));
for(int i=1; i<=n; i++)
x[i] =(int*)malloc(m*sizeof(int*));
return x ;
}
void read(int **a,int n,int m,FILE *f)
{
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
fscanf(f,"%d",&a[i][j]);
}
void print(int **a,int n,int m)
{
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
void transpose(int **a,int n,int m,int ***b)
{
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
b[j][i]=a[i][j];
}
int main()
{
int n,m;
FILE *f;
f=fopen("in.txt","r");
if(f==NULL)
printf("Error");
fscanf(f,"%d %d",&n,&m);
int **a=alloc(n,m);
read(a,n,m,f);
int **b=alloc(m,n);
transpose(a,n,m,b);
print(b,m,n);
return 0;
}
#包括
#包括
无效**分配(整数n,整数m)
{
int**x=(int**)malloc(n*sizeof(int*);
对于(int i=1;i有几个问题:
- 如果这是C代码,则将<代码> MalOC的结果作为可能隐藏的bug。(这不适用于C++代码)
- 您的“内部”
malloc
使用sizeof(int*)
,而它应该使用sizeof(int)
- 您的
alloc
函数返回void**
,这本身并没有错,但为什么不让它返回int**
- 这是最重要的一点:C数组索引从零开始,因此如果有一个由N个元素组成的数组,它们的编号从0到N-1