Инициализировать указатель
Прежде чем вы сможете использовать указатель, например, для оператора printf, вы
должны инициализировать указатель. Следующий пример не будет
инициализировать указатель:
Примечание: мы использовали void, когда объявили функцию main (). Так что нет возврата
0; нужно. (Некоторые компиляторы выдают предупреждение при использовании void на
главный(). Компилятор GNU выдаст предупреждение: тип возвращаемого значения 'main' is
не "int").
В этом примере мы печатаем значение, на которое указывает ptr_p. Однако мы
не инициализировал указатель. В этом случае указатель содержит
случайный адрес или 0.
Результатом этой программы является ошибка сегментации, некоторые другие
ошибка во время выполнения или случайный адрес печатается. Значение
Ошибка сегментации в том, что вы использовали указатель, который указывает на
неверный адрес.
Самый простой способ `` получить '' нулевой указатель в вашей программе
с помощью предопределенной константы NULL, которая определяется для вас
несколько стандартных заголовочных файлов, включая, и
, Чтобы инициализировать указатель на нулевой указатель, вы можете использовать
код типа
# включая
int * ip = NULL;
<и проверить его на нулевой указатель перед проверкой
указанное вами значение может использовать код вроде </p>
if(ip != NULL)
printf("%d\n", *ip);
Также можно ссылаться на нуль
указатель с помощью константы 0, и вы увидите некоторый код, который устанавливает
нулевые указатели, просто делая
int * ip = 0;
(На самом деле, NULL - это макрос препроцессора, который обычно
имеет значение или текст замены 0.) Кроме того, так как
определение `` true '' в C является значением, которое не равно 0, вы
увидит код, который проверяет ненулевые указатели с сокращенным кодом
как
if (ip) printf ("% d \ n", * ip);
Это имеет то же значение, что и наш
предыдущий пример; if (ip) эквивалентно if (ip! = 0) и if (ip! =
НОЛЬ). Все эти виды использования являются законными, и хотя я рекомендую вам
используйте константу NULL для ясности, вы встретите другой
формы, чтобы вы могли их распознать.