传递Matrix作为指向函数的指针

时间:2012-11-03 17:46:51

标签: c++ function pointers matrix

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

functions.h
functions.cc
main.cc

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

main.cc

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

functions.h

void matrix_insert(int *mtr);

functions.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);
    }
  }
}

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

谢谢!

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

3 个答案:

答案 0 :(得分:1)

如果你真的想使用C数组,那么可以按如下方式进行:

<强> main.cc

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

<强> functions.h

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

<强> functions.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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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];
        }
    }

}