Как передать в качестве параметра массив указателей на структуру в c - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь передать массив указателей на структуру в качестве параметра, изменить его в функции и вывести измененное значение в main().

Код:

#include "stdio.h"

typedef struct testStruct_s {
   int x;
   int y;
} testStruct;

typedef testStruct typeTab[4];

void modify(typeTab tab)
{
   printf("Before modification %d\n", tab[2].x);
   tab[2].x = 3;
   printf("Modified %d\n", tab[2].x);
}


int main()
{
   typeTab tab[4];
   tab[2]->x = 0;
   printf("First %d\n", tab[2]->x);
   modify(*tab);
   printf("Second %d\n", tab[2]->x);
   return 0;
}

И я получил следующий вывод:

First 0
Before modification 1719752944
Modify 3
Second 0

Я не знаю, как получить правильное значение tab[2].x в modify() и как изменить это значение для печати tab[2]->x = 3 после.

Для того, что я пытаюсь сделать, необходимо использовать typedef testStruct.

1 Ответ

0 голосов
/ 19 ноября 2018

typeTab уже является массивом, поэтому typeTab tab[4] объявляет массив массивов.Это означает, что tab[2]->x - это то же самое, что и tab[2][0].x, а это не то, что вам нужно.

Не добавляйте дополнительное измерение, затем измените доступ соответствующим образом.

typeTab tab;

tab[2].x = 0;
printf("First %d\n", tab[2].x);
modify(tab);
printf("Second %d\n", tab[2].x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...