2;
int *pa = &a; int *pb = &b;
int c=pb-pa; // Разница между адресами
printf("Результат вычитания равен: %d \n",c);
Результат будет 1. 1 единица смещения или что? Я понимаю, что это, это размер памяти выделяемый под int, но как это назвать правильно?
Во-первых будет уб, переменная a и переменная б никак не связаны и хранится могут где угодно. Во-вторых адресная арифметика (int *)(uintptr_t)0 + 1 будет 4 (ну в случае, если инт - 4 байта), также (int *)(uintptr_t)4 - 1 будет 0, логика ясна? В общем случае конечный результат будет численно равен (char *)ptr +/- (sizeof *ptr) * n, но только при условии арифметики в рамках одного объекта и/или рамках одного выделенного блока памяти.
У тебя каждая строчка уб
Обсуждают сегодня