使用指针填充矩阵

时间:2016-09-03 08:46:16

标签: c

下面代码的主要思想是创建实际上是整数矩阵的新类型。之后,创建用于读取和写入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;
}

1 个答案:

答案 0 :(得分:2)

不要混用CC++

#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++)