如何将结构传递给C ++中的函数?

时间:2010-10-12 19:14:07

标签: c++

结构定义为

struct state{

    string node_name;
    int node_no;
    int node_val;
    int occupant;
    vector<int>node_con;
        };

state s[100][100]

我想将它与i和j值一起发送到函数,其中s [i] [j],(i->行,j->列)。结构如何与i和j一起发送?

4 个答案:

答案 0 :(得分:1)

这样

void f(StructName (*a)[100], int i, int j) {

}

请阅读有关二维数组和指向数组的指针。或者在C ++中,你可以通过引用传递它,这将使它不会衰减到它的第一个元素

void f(StructName (&a)[100][100], int i, int j) {

}

答案 1 :(得分:0)

在C中没有办法(AFAIK) 在C ++中你可以做到这一点

template <class T, int N, int M>
void f(T (&a)[N][M])
{
//...
}

或者,您可以手动传递尺寸,或者对它们进行硬编码

答案 2 :(得分:0)

C中,您可以将其包装在另一个结构中: - )

我在你的代码中看到的内容看起来不像C ...

struct state {
    string node_name;
    int node_no;
    int node_val;
    int occupant;
    vector<int>node_con;
};

struct wrap {
  int i;
  int j;
  struct state (*ps)[];
};

int main(void) {
  struct state s[100][100];
  struct wrap x;

  x.i = 100;
  x.j = 100;
  x.ps = s;

  fx(x);

  return 0;
}

答案 3 :(得分:0)

你的意思是传递一系列结构。我认为应该是这样的:

struct state{
    string node_name;
    int node_no;
    int node_val;
    int occupant;
    vector<int>node_con;
};

state s[100][100];

void doSomething(state theState[][100], int i, int j)
{
    cout << theState[i][j].node_name << endl;
}

int main()
{
    s[0][1].node_name = "s[0][1]";
    doSomething(s, 0, 1);
}