Пояснить результат работы кода - 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;
}

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

  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
Похожие ответы