Составители:
Рубрика:
50
При таком объявлении строчные константы будут занесены в раздел
констант в памяти, массив указателей будет состоять из четырех эле-
ментов, под которые будет выделена память, и эти элементы будут ини-
циированы адресами, указывающими на начало строчных констант.
Строчная константа в языке С ассоциируется с адресом начала стро-
ки в памяти, тип строки получает char*(указатель на тип char). Поэто-
му возможно и активно используется следующее присваивание:
char *p;
p=”Hello, World !”;
В языке С возможна ситуация, когда указатель указывает на указа-
тель. В этом случае описание имеет следующий вид:
int **point;
Здесь point имеет тип указатель на указатель int. Соответственно,
чтобы получить целочисленное значение переменной, на которую ука-
зывает point, надо в выражении использовать **point. Рассмотрим при-
мер:
# include < stdio.h >
/* Пример 28 */
main()
{
int i;
int *pi;
int **ppi;
i=12;
pi=&i;
ppi=π
printf(“i = %d pi = %p ppi = %p **ppi = %d\n”,i,pi,ppi,**ppi);
}
После того, как указатель был объявлен, но до того, как ему было
присвоено значение, указатель содержит неопределенное значение. По-
пытка использовать такое значение может вызвать ошибку при выпол-
нении программы, и даже, нарушить работу операционной системы.
Принято считать, что указатель с неопределенным значением должен
иметь значение null, но это не делает такой указатель “безопасным”. С
другой стороны нулевой указатель иногда удобно использовать как при-
знак окончания некоторого массива указателей или списка, поэтому он
часто фигурирует в операциях сравнения.
Страницы
- « первая
- ‹ предыдущая
- …
- 48
- 49
- 50
- 51
- 52
- …
- следующая ›
- последняя »