Прокомментировать код - C (СИ) (71472)
Формулировка задачи:
Добрый вечер! я хочу просто разобраться в логике работы данного когда. можете пожалуйста описать, что и как тут происходит? и что получается на выходе и почему
int m[] = {1, 2, 3, 4, 5};
int* p1 = m;
int* p2 = m;
p1 += 3;
++p2;
ptrdiff_t dp = p2 - p1;
int x = *p1;
int y = *p2;
std::cout << dp << x << y;Решение задачи: «Прокомментировать код»
textual
Листинг программы
int m[] = {1, 2, 3, 4, 5}; //объявлен целочисленный массив и проинициализирован
int* p1 = m; //объявлено 2 указателя на этот массив
int* p2 = m;
p1 += 3;//тут передвигают указатели р1 на +3 и р2 на +1
++p2;
ptrdiff_t dp = p2 - p1;//тут для меня не "совсем простая арифметика над указателями", самому интересно
int x = *p1;// еще 2 указателя(поправьте, если не так!)
int y = *p2;
std::cout << dp << x << y;// похоже на вывод на консоль, но как-то не для Си
Объяснение кода листинга программы
- Объявлен целочисленный массив и проинициализирован.
- Объявлено 2 указателя на этот массив.
- p1 += 3; передвигают указатели р1 на +3 и р2 на +1.
- ++p2;
- ptldiff_t dp = p2 - p1;.
- int x = *p1;.
- int y = *p2;.
- std::cout << dp << x << y;.