Пояснить результат работы кода - C (СИ) (72541)

Узнай цену своей работы

Формулировка задачи:

Добрый вечер. кто нибудь может объяснить в чем здесь подвох? http://rextester.com/BKATS43592
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main() {
  4. int *p = (int*)malloc(sizeof(int));
  5. int *q = (int*)realloc(p, sizeof(int));
  6. *p = 1;
  7. *q = 2;
  8. if (p == q)
  9. printf("%d %d\n", *p, *q);
  10. }
  11. //$ clang -O realloc.c ; ./a.out
вывод:
1 2

Решение задачи: «Пояснить результат работы кода»

textual
Листинг программы
  1. int main() {
  2.   int *p = (int*)malloc (sizeof(int));
  3.   if (!p) return 1;
  4.   int *q = (int*)realloc (p, sizeof(int));
  5.   if (q != p) return 1;
  6.   p = (int*)realloc (p, sizeof(int));
  7.   if (p != q) return 1;
  8.   *p = 1;
  9.   *q = 2;
  10.   if (p == q) printf("%d %d\n", *p, *q);
  11.   return 0;
  12. }

Объяснение кода листинга программы

  1. Объявлена переменная p типа int* и инициализирована значением NULL
  2. Выполнена операция malloc для выделения памяти под один целочисленный объект, результат приведен к типу int* и присвоен переменной p
  3. Проверка на успешность выделения памяти с помощью оператора if и возврат значения 1 в случае неудачи
  4. Объявлена переменная q типа int* и инициализирована значением NULL
  5. Выполнена операция realloc для изменения размера памяти, выделенной переменной p, на размер памяти, необходимый для одного целочисленного объекта, результат приведен к типу int* и присвоен переменной q
  6. Проверка на успешность изменения размера памяти с помощью оператора if и возврат значения 1 в случае неудачи
  7. Выполнена операция realloc для изменения размера памяти, выделенной переменной p, на размер памяти, необходимый для одного целочисленного объекта, результат приведен к типу int* и присвоен переменной p
  8. Проверка на успешность изменения размера памяти с помощью оператора if и возврат значения 1 в случае неудачи
  9. Переменная p приведена к типу int и присвоен результат приведенной переменной q
  10. Переменная q приведена к типу int и присвоен результат приведенной переменной p
  11. Проверка на равенство переменных p и q с помощью оператора if и возврат значения 1 в случае неравенства
  12. Вывод на консоль значения переменных p и q с помощью функции printf
  13. Возврат значения 0, указывающего на успешный исход работы программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы