Пояснить результат работы кода - C (СИ) (72541)
Формулировка задачи:
Добрый вечер.
кто нибудь может объяснить в чем здесь подвох?
http://rextester.com/BKATS43592
вывод:
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- int main() {
- int *p = (int*)malloc(sizeof(int));
- int *q = (int*)realloc(p, sizeof(int));
- *p = 1;
- *q = 2;
- if (p == q)
- printf("%d %d\n", *p, *q);
- }
- //$ clang -O realloc.c ; ./a.out
1 2
Решение задачи: «Пояснить результат работы кода»
textual
Листинг программы
- int main() {
- int *p = (int*)malloc (sizeof(int));
- if (!p) return 1;
- int *q = (int*)realloc (p, sizeof(int));
- if (q != p) return 1;
- p = (int*)realloc (p, sizeof(int));
- if (p != q) return 1;
- *p = 1;
- *q = 2;
- if (p == q) printf("%d %d\n", *p, *q);
- return 0;
- }
Объяснение кода листинга программы
- Объявлена переменная
p
типаint*
и инициализирована значениемNULL
- Выполнена операция
malloc
для выделения памяти под один целочисленный объект, результат приведен к типуint*
и присвоен переменнойp
- Проверка на успешность выделения памяти с помощью оператора
if
и возврат значения 1 в случае неудачи - Объявлена переменная
q
типаint*
и инициализирована значениемNULL
- Выполнена операция
realloc
для изменения размера памяти, выделенной переменнойp
, на размер памяти, необходимый для одного целочисленного объекта, результат приведен к типуint*
и присвоен переменнойq
- Проверка на успешность изменения размера памяти с помощью оператора
if
и возврат значения 1 в случае неудачи - Выполнена операция
realloc
для изменения размера памяти, выделенной переменнойp
, на размер памяти, необходимый для одного целочисленного объекта, результат приведен к типуint*
и присвоен переменнойp
- Проверка на успешность изменения размера памяти с помощью оператора
if
и возврат значения 1 в случае неудачи - Переменная
p
приведена к типуint
и присвоен результат приведенной переменнойq
- Переменная
q
приведена к типуint
и присвоен результат приведенной переменнойp
- Проверка на равенство переменных
p
иq
с помощью оператораif
и возврат значения 1 в случае неравенства - Вывод на консоль значения переменных
p
иq
с помощью функцииprintf
- Возврат значения 0, указывающего на успешный исход работы программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д