Вычитание допускается для числовых типов, но структуры не могут быть вычтены друг из друга. Поэтому, когда вы говорите «* p_customers - * p_customers_start + 1», для «*p_customers_start+1" and "*p_customers - <previous_expression>
» нет смысла.
Например, если в структуре есть записи сотрудников, что означает вычитание одного из другого?
Надеюсь, вам нужен номер текущего клиента. Если да, вы можете использовать просто "p_customers - p_customers_start +1"
.
. Имя массива является" постоянным указателем ". Поэтому его нельзя изменить. Когда вы говорите" p_customers->last_name++
", вы пытаетесь изменитьконстанта (указатель), что недопустимо.
Рассмотрим ситуацию, когда пользователь сначала задает NEWLINE для фамилии, а не фактическую фамилию. И в случае, если длина фамилии превышает MAX_NAME_LENGTH, вы в конечном итогеперезаписывая область за пределами массива last_name. Когда это происходит, вы получаете ошибку сегментации.