передача структуры массива в виде массива - PullRequest
2 голосов
/ 27 апреля 2010

У меня проблемы с передачей структурного массива в качестве параметра функции

struct Estructure{
 int a;
 int b;
};

и функция

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

а главное было бы что-то вроде этого

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

это действительно?

Ответы [ 5 ]

1 голос
/ 27 апреля 2010

Нет, вам нужно ввести typedef вашей структуры и передать ей массив; передача по ссылке не работает в 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);
}
0 голосов
/ 27 апреля 2010

Либо прикрепите рабочую структуру перед Estructure, либо введите ее в другой тип и используйте ее. Также передача по ссылке не существует в C, вместо этого передайте указатель, если хотите. Может быть:

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

Не совсем так же, как массив, но это должно работать на земле C, и он передает указатель для эффективности.

0 голосов
/ 27 апреля 2010
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.

0 голосов
/ 27 апреля 2010
Begining(struct Estructure s1[])
{
   //modifi the estructure s1
};

int main()
{
  struct Estructure m[200];
  Begining(m);
  return 0;
};
0 голосов
/ 27 апреля 2010

typedef struct {int a; int b;} Структура;

Пустота Начало (Estruct * svector) { svector [0] .a = 1; }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...