Как узнать количество элементов в массиве, созданном для структуры? - PullRequest
0 голосов
/ 04 апреля 2019

Я создал определенную структуру, а затем продолжил создавать массив для структуры следующим образом:

struct members
{

char name[32];
intmax_t personalID;

}typedef struct members Member;

Member array_member[100];

Позже я хочу узнать, сколько элементов в массиве,согласно некоторым ответам, которые я прочитал, этого должно быть достаточно

int nrofmembers = sizeof(array_member) / sizeof(array_member[0]);

Но по своему опыту я знаю, что это невозможно, если сам массив является параметром.Поэтому я попробовал это:

int nrofmembers =  sizeof(*array_member) / sizeof(array_member[0]);

К сожалению, это оказалось неправильно.Значение nrofmembers после этого равно 1, но это не так.

Любой совет, как это сделать?

1 Ответ

1 голос
/ 04 апреля 2019

Если у вас есть указатель, вы не можете использовать этот простой метод времени компиляции.Вам нужно передать размер массива в функцию

. В C вы всегда передаете указатель, даже если ваше объявление ... foo(Member arr[]) или ... foo(Member arr[100])

struct members
{

char name[32];
intmax_t personalID;

}typedef struct members Member;

Member array_member[100];


int foo(Member *arr, size_t size)
{
    /* .... */
}

int main()
{
    /* correct */
    foo(array_member, sizeof(array_member) / sizeof(array_member[0]));
    printf("Hello World");

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