Указатель на структуру - что напечатает программа - C (СИ)
Формулировка задачи:
Возьмём пример на языке Си:
1. Что напечатается?
2. Что будет, если раскомментировать закомментированный код?
3. Что будет, если данный тест подать в компилятор Си++?
Традиционная просьба к тем, кто заранее знает ответ, прятать его под CUT
#include <stdio.h> typedef struct { int x, y; } MyStruct; int main (void) { struct MyStruct *p; p = NULL; printf ("%p\n", p); /* p++; printf ("%p\n", p); */ return 0; }
UPD
: подправлен примерРешение задачи: «Указатель на структуру - что напечатает программа»
textual
Листинг программы
#include <stdio.h> typedef struct { int x, y; } MyStruct; typedef struct MyStruct* MyStructPtr; int main (void) { MyStructPtr p; p = NULL; printf ("%p\n", p); /* p++; printf ("%p\n", p); */ return 0; }
Объяснение кода листинга программы
В данном коде определен тип структуры MyStruct
с двумя полями типа int
— x
и y
. Также определен указатель на эту структуру MyStructPtr
.
В функции main
инициализируется указатель p
на структуру MyStruct
значением NULL
(указатель на отсутствующую память). Затем происходит попытка инкремента указателя p
(что было бы некорректно, так как указатель не указывает на существующую память), и выводится значение указателя до и после инкремента.
Но так как в коде отсутствует оператор new
для выделения памяти под объект структуры MyStruct
, то программа не выполняется и выдается ошибка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д