将数组结构作为数组传递

时间:2010-04-27 00:29:48

标签: c arrays struct

我无法将结构数组作为函数的参数传递

struct Estructure{
 int a;
 int b;
};

和一个功能

Begining(Estructure &s1[])
{
   //modifi the estructure s1
};

主要是这样的

int main()
{
  Estructure m[200];
  Begining(m);
};

这是有效的吗?

5 个答案:

答案 0 :(得分:1)

不,你需要输入你的结构,你应该将数组传递给它;通过引用传递在C中不起作用。

typedef struct Estructure{
 int a;
 int b;
} Estructure_s;

Begining(Estructure_s s1[])
{
   //modify the estructure s1
}

int main()
{
  Estructure_s m[200];
  Begining(m);
}

可替换地:

struct Estructure{
 int a;
 int b;
};

Begining(struct Estructure *s1)
{
   //modify the estructure s1
}

int main()
{
  struct Estructure m[200];
  Begining(m);
}

答案 1 :(得分:0)

typedef struct {int a; int b;}结构;

void开始(Destructure * vector) {vector [0] .a = 1; }

答案 2 :(得分:0)

Begining(struct Estructure s1[])
{
   //modifi the estructure s1
};

int main()
{
  struct Estructure m[200];
  Begining(m);
  return 0;
};

答案 3 :(得分:0)

typedef struct{
 int a;
 int b;
} Estructure;

void Begining(Estructure s1[], int length)
//Begining(Estructure *s1)  //both are same
{
   //modify the estructure s1
};

int main()
{
  Estructure m[200];
  Begining(m, 200);
  return 0;
};

注意:最好将length添加到您的函数Beginning

答案 4 :(得分:0)

将工作结构粘贴在Estructure之前,或者将其定义为其他类型并使用它。 C中也不存在通过引用传递,如果您愿意,则传递指针。也许:


void Begining(struct Estructure **s1)
{
   s1[1]->a = 0;
}

与数组不完全相同,但这应该适用于C land并且它会传递指针以提高效率。