我是新来的编码,目前在学校学习C.我有一个关于如何使用函数在C中添加矩阵的问题。我遇到了一些困难,希望能在这里得到一些建议。我的老师给这门课的条件是:1)两个5×6的矩阵,整数入口从1到100; 2)定义和使用你自己的函数。下面是我到目前为止已经编写的代码:C函数添加矩阵
#include <stdio.h>
#include <stdlib.h>
#define ROW 5
#define COLUMN 6
size_t addMatrices(int a[][COLUMN], int b[][COLUMN]);
void printArray(int a[][COLUMN]);
int main(void) {
int row, column;
int matrix1[ROW][COLUMN] = { {0}, {0} };
int matrix2[ROW][COLUMN] = { {0}, {0} };
for (row = 0; row < ROW; row++) {
for (column = 0; column < COLUMN; column++) {
matrix1[row][column] = 1 + (rand() % 100);
matrix2[row][column] = 1 + (rand() % 100);
}
}
printf("matrix1:\n");
printArray(matrix1);
printf("\n\nmatrix2:\n");
printArray(matrix2);
printf("\n\nresult:\n");
addMatrices(matrix1, matrix2);
printfArray(result);
printf("\n");
return 0;
}
void printArray(int a[][COLUMN]) {
int row, column;
for (row = 0; row < ROW; row++) {
for (column = 0; column < COLUMN; column++) {
printf("%d ", a[row][column]);
}
printf("\n");
}
}
size_t addMatrices(int a[][COLUMN], int b[][COLUMN]) {
int result[ROW][COLUMN] = { {0}, {0} };
int row, column;
for (row = 0; row < ROW; row++) {
for (column = 0; column < COLUMN; column++) {
result[row][column] = a[row][column] + b[row][column];
}
}
return result;
}
如果你看一下主要方法体,编译器说,由于被传递到当变量“结果”没有定义有错误函数printArray()。我理解为什么会发生此错误的概念(关于局部变量和传递参数),但我该如何解决这个问题?
除此之外,任何其他建议或建议的话都非常感谢。
谢谢!从注释
'int result [ROW] [COLUMN] = {{0},{0}};'移动到'main'。并调用'void addMatrices(int a [] [COLUMN],int b [] [COLUMN],int result [] [COLUMN]){' – BLUEPIXY
您不能返回本地声明的矩阵'int result [ROW] [COLUMN] = {{0},{0}};'来自函数。它是在函数栈*上创建的,它在函数**返回**上被**销毁。 (1)动态分配'result'或(2)将它作为参数传递给你的add函数。 –
只是一个想法:如果编译器抱怨** undefined **变量,也许_defining_它可能有帮助?哦,并且:C不支持_methods_。 'main'也是C++中的一个_function_。 – Olaf