У меня есть вопрос о пересмотре экзамена по арифметике указателей, и одна часть, в которой мы вычитаем адрес двух переменных массива, для меня не имеет смысла.
На самом деле один массив равен другому. Я понимаю отдельные выходы для каждой переменной массива, и в этом случае разница между двумя адресами составляет 16, учитывая int = 4 байта в этой ОС.
Я не понимаю, почему вычитание дает 4. Моя логика заключалась бы в том, что они находятся на 4 позиции в массиве, но для меня это не имеет смысла.
int main(void)
{
int oddNums[5] = {1, 3, 5, 7, 9};
int *ip = oddNums;
printf("&oddNums[4] %d - ip %d= %d\n",&oddNums[4], ip, &oddNums[4] - ip);
/*prints &oddNums[4] 2686740 - ip 2686724= 4*/
return EXIT_SUCCESS;
}