#c
#include#include #include void main() { int a, *p; scanf("%i", a); *p = &a; printf("%i", p); _getch(); }
Ответы
Ответ 1
#include#include #include void main() { int a = 0; int *p = NULL; scanf("%i", &a); p = &a; printf("%p\n", p); printf("%i\n", *p); _getch(); } Ответ 2
В чистом виде пример выглядит так: #includevoid main() { int a, *p; scanf("%i", a); *p = &a; printf("%i", p); } Если собрать его с помощью gcc: $ gcc file.c -o file то компилятор выведет сообщение об предупреждениях: file.c:8: warning: format ‘%i’ expects type ‘int *’, but argument 2 has type ‘int’ file.c:10: warning: assignment makes integer from pointer without a cast file.c:12: warning: format ‘%i’ expects type ‘int’, but argument 2 has type ‘int *’ В них все и дело. Во первых, функции scanf и printf ожидают другой формат данных, отличный от того, который им подается. Во-вторых, адрес переменной присваивается не указателю, а целому, на которое указатель указывает.
Комментариев нет:
Отправить комментарий