下面代码的主要思想是创建实际上是整数矩阵的新类型。之后,创建用于读取和写入std输出的函数。提到的函数必须是参数中的指针。出了点问题,这些功能都不起作用。
#include <iostream>
#include<stdio.h>
#include<conio.h>
typedef int SQM[3][3];
SQM *m;
void scan(SQM *sqm){
int size = 3;
int column,row = 0;
printf("\nEnter matrix : ");
for (row = 0; row < size; row++) {
for (column = 0; column < size; column++)
scanf("%d", &sqm[row][column]);
}
}
void print(SQM *sqm){
int size = 3;
int row, column = 0;
printf("Entered matrix is : \n");
for (row = 0; row < size; row++) {
printf("\n");
for (column = 0; column < size; column++) {
printf("\t%d", sqm[row][column]);
}
}
}
int main() {
scan(m);
print(m);
return 0;
}
答案 0 :(得分:2)
不要混用C
和C++
#include <iostream> /* Delete this line */
#include <stdio.h>
在使用之前,您需要为m
预留空间。
尝试:
int main(void)
{
m = malloc(sizeof *m);
if (m != NULL) {
scan(m);
print(m);
}
return 0;
}
请注意,您可以避免全局传递地址:
int main(void)
{
SQM m;
scan(&m);
print(&m);
return 0;
}
最后,(作为风格问题)不要使用像3
这样的幻数:
#define SQM_SIZE 3
typedef int SQM[SQM_SIZE][SQM_SIZE];
...
for (row = 0; row < SQM_SIZE; row++) {
for (column = 0; column < SQM_SIZE; column++)