Не компилируется программа - C (СИ) (75689)
Формулировка задачи:
#include <stdio.h>
#define PR(X) printf("X =%u,*X=%d,&X=%u\n",X,*X,&X)
int main(void)
{
static int urn[]={100, 200, 300};
/*unsigned*/ int *ptr1, *ptr2;
ptr1 = urn;
ptr2 = &urn[2];
/*unsigned int PR;*/
PR(ptr1);
ptr1++;
PR(ptr1);
PR(ptr2);
++ptr2;
PR(ptr2);
printf("ptr2 - ptr1 = %u\n", ptr2 - ptr1);
}
pointers.c: In function ‘main’:
pointers.c:10: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’
pointers.c:10: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’
pointers.c:12: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’
pointers.c:12: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’
pointers.c:13: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’
pointers.c:13: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’
pointers.c:15: warning: format ‘%u’ expects type ‘unsigned int’, but argument 2 has type ‘int *’
pointers.c:15: warning: format ‘%u’ expects type ‘unsigned int’, but argument 4 has type ‘int **’
Решение задачи: «Не компилируется программа»
textual
Листинг программы
#include <stdio.h>
#define PR(X) printf("X =%p,*X=%d,&X=%p\n",X,*X,&X)
int main(void)
{
static int urn[]={100, 200, 300};
int *ptr1, *ptr2;
ptr1 = urn;
ptr2 = &urn[2];
/*unsigned int PR;*/
PR(ptr1);
ptr1++;
PR(ptr1);
PR(ptr2);
++ptr2;
PR(ptr2);
printf("ptr2 - ptr1 = %d\n", ptr2 - ptr1);
return 0;
}
Объяснение кода листинга программы
- Подключение стандартной библиотеки
. - Макроопределение PR(X) - вывод информации о переменной X на экран.
- Объявление массива urn типа int со статичным динамическим диапазоном на 3 элемента и инициализация его элементов значениями 100, 200, 300.
- Объявление двух указателей типа int * на элементы массива urn: ptr1 и ptr2.
- Присваивание значения ptr1 элементу urn[0], то есть ptr1 указывает на первый элемент массива urn.
- Присваивание значения ptr2 элементу urn[2], то есть ptr2 указывает на третий элемент массива urn.
- Вызов функции PR(ptr1) для вывода информации о переменной ptr1.
- Инкрементирование значения ptr1 на единицу.
- Вызов функции PR(ptr1) для вывода информации о переменной ptr1.
- Инкрементирование значения ptr2 на единицу.
- Вызов функции PR(ptr2) для вывода информации о переменной ptr2.
- Вывод значения ptr2 - ptr1 на экран.
- Возврат 0 из функции main.