Массив указателя на структуру в C - PullRequest
0 голосов
/ 09 июля 2020

Я использую следующий код.

#include <stdio.h>

struct point
{
   int formatbyte1;
   int formatbyte2;
   int formatbyte3;
};


const struct point SW_VERSN_POINT =
{
    1,2,3
};

const struct point SWMVERSN_POINT =
{
    4,5,6
};

const struct point *object_directory[] =
{
    &SW_VERSN_POINT,
    &SWMVERSN_POINT,
    0
};


int main()
{

    printf("%ld\n",  sizeof(SW_VERSN_POINT.formatbyte1));
    printf("%ld  0X%X, 0x%X\n", sizeof(struct point), &SWMVERSN_POINT.formatbyte1, &SW_VERSN_POINT.formatbyte1);
    printf("%ld  0X%X, 0x%X\n", sizeof(object_directory), object_directory[0], object_directory[1]);

    return 0;
}

Результат выполнения вышеуказанной программы:

4
12  0XE2BF0788, 0xE2BF0778
24  0XE2BF0778, 0xE2BF0788

Но когда я изменил object_directory, удалил из него 0

const struct point *object_directory[] =
{
    &SW_VERSN_POINT,
    &SWMVERSN_POINT
};

Теперь вывод вышеупомянутой программы:

4
12  0XF967D788, 0xF967D778
16  0XF967D778, 0xF967D788

Почему размер object_directory изменился с 24 на 16. (Откуда взялось 16) Заранее спасибо.

Этот код работает на Linux.

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