Существует два способа сделать это (если значение int может иметь любое возможное значение для int).
Первый вариант: Сохранение количество элементов в массиве, и увеличить значение, если добавить/удалить элементы.
int count;
int *array;
Второй вариант: Создание структуры с указателем на следующей переменной в массиве. Если ваш номер NULL
вы уже достигли конца вашего списка.
struct Item {
int i;
struct Item *next;
}
// pointing at the start adress:
struct Item *start = NULL;
// adding first item:
start = malloc(sizeof(struct Item));
start->i = 123;
start->next = NULL // mark the current end of list (not needed if you add a value right after the first)
// adding second item:
start->next = malloc(sizeof(struct Item));
start->next->i = 456;
start->next->next = NULL
// etc
Невозможно. Представьте, что происходит, когда весь массив имеет полезные элементы ... для маркера нет места. Используйте вспомогательную переменную с количеством элементов. – pmg
@pmg Ну, если вы думаете о строках, то они массивы, и у них есть конец строкового маркера (null '\ 0'). Все, что вам нужно сделать, это создать массив, размер которого на один слот больше, чем требуемые элементы. –
@ nadirs: вы правы. Если OP может использовать определенное значение для маркера (например: '0',' 42', '-8888',' INT_MAX', 'INT_MIN'), это возможно. – pmg