1

在我的项目中,我有这些文件:

functions.h
functions.cc
main.cc

我试图以这种方式将 Matrix 作为指针传递给函数:

主文件

// Size -> const short Size = 10;
int mtr1[Size][Size];
matrix_insert((int *)mtr1);

函数.h

void matrix_insert(int *mtr);

函数.cc

void matrix_insert(int *mtr) {
  short i, j;

  for (i = 0; i < Size; i++) {
    for (j = 0; j < Size; j++) {
      std::cin >> *(mtr + i * Size + j);
    }
  }
}

这实际上有效,但我不喜欢这种方式......
有更好的方法吗?

谢谢!

编辑:可以用向量模拟矩阵吗?

4

3 回答 3

1

如果你真的想使用 C 数组,那么你可以这样做:

主文件

int mtr1[Size][Size];
matrix_insert(mtr1);

函数.h

const short Size = 10;
void matrix_insert(int mtr[Size][Size]);

函数.cc

void matrix_insert(int mtr[Size][Size]) {
  short i, j;

  for (i = 0; i < Size; i++) {
    for (j = 0; j < Size; j++) {
      std::cin >> mtr[i][j];
    }
  }
}

工作版本:http: //ideone.com/1ik7T9

于 2012-11-03T17:54:37.847 回答
1

创建一个像这样的矩阵类:

http://www.parashift.com/c++-faq/matrix-subscript-op.html

于 2012-11-03T17:59:05.753 回答
1

您可以使用模板执行此操作:

template<int Size>
void matrix_insert(int (&mtr)[Size][Size])
{
    short i, j;

    for (i = 0; i < Size; i++)
    {
        for (j = 0; j < Size; j++)
        {
            std::cin >> mtr[i][j];
        }
    }
}
于 2012-11-03T18:02:16.890 回答