Как узнать размер односвязного списка, указателей, элементов списка через sizeof()

Рейтинг: 0Ответов: 0Опубликовано: 26.02.2023
#include <stdio.h> 
#include <conio.h>

struct list
{
    list* next = NULL;
    float elem = 0;
} *l = new list, *k = l;

float s = 0; int q = 0;

int main()
{
    l->next = new list;
    l->next->elem = 1;
    l->next->next = new list;
    l->next->next->elem = 2;
    l->next->next->next = new list;
    l->next->next->next->elem = 3;
    l->next->next->next->next = NULL;
    



    k = l->next->next;
    l->next->next = k->next;
    delete k;
                        ;
    printf_s("%lu\n", sizeof(l->elem)); // Размер всего списка???

    for (l = l->next; l; l = l->next)
    {
        printf_s("%2.f\n", l->elem);
        s += l->elem;
        q++;
    }
    printf_s("%2.f", s / q);


    return 0 * _getch();

Обычно указатель в 64 битной версии занимает 8 байт Но хочу удостоверится в этом, ну и вообще понять как работает sizeof()

Так-же, вопрос в размере элемента этого списка. Можно проверить так? printf_s("%lu\n", sizeof(l->next->elem)); Если это так, то следующий вопрос, как проверить размер всех элементов списка? printf_s("%lu\n", sizeof(l->elem)); Но компилятор мне говорит, что там 4 байта, но элементов три. Должно же быть 12? или я где-то тупой:?)

Ответы

Ответов пока нет.