Как узнать размер односвязного списка, указателей, элементов списка через sizeof()
#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? или я где-то тупой:?)
Источник: Stack Overflow на русском