#include struct int_list_item { int number; // 4 bytes int_list_item *next; // 8 bytes }; struct int_list { int_list_item *first_node = 0; }; void add_number(int_list &list, int number){ if(!list.first_node){ list.first_node = new int_list_item; list.first_node->number = number; list.first_node->next = 0; return; } int_list_item *place = list.first_node; for(; place->next; place = place->next); place->next = new int_list_item; place->next->number = number; place->next->next = 0; } int main(){ int_list test_list; add_number(test_list, 240); add_number(test_list, 310); add_number(test_list, 435); // Let's print them out! for(int_list_item *place = test_list.first_node; place; place = place->next){ printf("%d (stored at address %p)\n", place->number, &place->number); } }