C - 分配内存的函数

时间:2016-05-29 20:42:37

标签: c function pointers matrix allocation

我编写了一个程序,创建了2个矩阵并将它们相乘。但是我必须将我的代码划分为函数,并且我在声明一个将为矩阵分配内存的函数时遇到问题。

这是我的代码:

void matrixMult(){
int **A, **B, **C; //matrices
int rowA, colA, rowB, colB; //rows and columns 
int i, j, k; //for iterations

printf("Number of rows in matrix A: \n");
scanf("%d", &rowA);
printf("Number of columns in matrix A: \n");
scanf("%d", &colA);

printf("Number of rows in matrix B: \n");
scanf("%d", &rowB);
printf("Number of columns in matrix B: \n");
scanf("%d", &colB);

//memory allocation
A = (int**)malloc(rowA * sizeof(int));
B = (int**)malloc(rowB * sizeof(int));
C = (int**)malloc(rowA * sizeof(int));

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

for (i = 0; i < rowB; i++)
  {
   B[i] = (int*)malloc(colB * sizeof(int));
  }

for (i = 0; i < rowA; i++)
  {
   C[i] = (int*)malloc(colB * sizeof(int));
  } 
/* 
the rest of code
*/
}

这个功能应该是什么样的?

2 个答案:

答案 0 :(得分:3)

您有两种方法可以在实践中使用:

  • 编写一个分配矩阵并返回结果的函数 - 您的函数将具有以下签名:int **alloc_matrix(size_t rows, size_t columns)
  • 编写一个带指针指向矩阵指针的函数,并返回状态代码 - 签名为int alloc_matrix(int*** res, size_t rows, size_t columns)

第二个函数返回的值表示分配内存成功或失败。

答案 1 :(得分:0)

第一次分配你有错误。你必须为Ints分配一系列指针。

A= (int**)malloc(rowA * sizeof(int*));
B = (int**)malloc(rowB * sizeof(int*));
C = (int**)malloc(rowA * sizeof(int*));

表示功能问题

int** alocatingArray(size_t nRows, size_t nCols){
...
}

此函数将用于返回指向矩阵

的主指针的每个数组