Я хотел бы научиться передавать по ссылке массив структур в second function
, вызванный/выполненный из first function
. Моя цель - изменить/изменить содержимое произвольной структуры из second function
только. Код ниже работает, но, к сожалению, не делает именно то, что я хочу достичь. Я хотел бы иметь доступ к произвольной структуре в пределах second function
. Другими словами, я хотел бы обработать все структуры (используя цикл for
) в пределах second function
, позвонив/выполнив first function
только в main
только после и не используя for
цикл.Передача массива структур в функцию?
second function
, в нижеследующем коде, называется passByReference_inner
.
array_of_struct.h:
struct card
{
int face;
int nose;
};
typedef struct card HEAD ;
/* prototype */
extern void passByReference(HEAD **c); /* first function */
extern void passByReference_inner(HEAD *c); /* second function */
первая функция: (passByReference)
#include <stdio.h>
#include "array_of_struct.h"
void passByReference(HEAD **c)
{
passByReference_inner (*c); /* second function */
}
Вторая функция: (passByReference_inner)
#include <stdio.h>
#include "array_of_struct.h"
void passByReference_inner(HEAD *c)
{
c->face = (c->face) + 1000;
c->nose = (c->nose) + 2000;
}
главная:
#include <stdio.h>
#include "array_of_struct.h"
int main(void)
{
int i;
static HEAD c[12];
static HEAD *cptr[12];
for (i = 0; i < 12; i++)
{
c[i].face = i + 30;
c[i].nose = i + 60;
cptr[i] = &c[i];
}
for (i = 0; i < 12; i++)
{
passByReference(&cptr[i]); /* first function */
}
return 0;
}
Я хочу все вопросы были, как этот ... –
язык C не может пройти по ссылке, только по значению; однако он может передать указатель. – user3629249
в main() переменная 'cptr' и все использование могут быть полностью заменены ссылками на '& c [i]' – user3629249