ВУЗ:
Составители:
Рубрика:
}
Здесь указателю point_Ch присвоен адрес длиной целой l = 0x89ABCDEF.
В памяти эта переменная занимает 4 байта. В цикле на каждой итерации
значение адреса увеличивается на единицу. В операторе point_Ch ++
осуществляется переход к следующему байту памяти. При этом каждый раз
читается только один байт, так как указатель point_Ch ссылается на тип char. В
операторе printf(...) выводится значение по адресу.
При выполнении этой программы был получен такой результат:
efcdab89
Исходное число выведено на экран в обратном виде, так как младшие разряды
числа хранятся по младшим адреса памяти, а старшие – по старшим.
ЗАМЕЧАНИЕ. Подумайте, как сделать программу, чтобы число на экране
выглядело правильно.
5. Арифметические операции с указателем
Программа # 1.7 демонстрирует еще одну операцию с указателями. Указатель -
это число, под которым подразумевается адрес памяти. Сложение или
вычитание влечет за собой изменение адреса. В приведенной программе это
реализовано оператором point_Ch ++; где ++ - операция инкремента на
единицу. Фактически адрес увеличивается не на единицу, а на то количество
байт памяти, с каким типом данных работает указатель.
6. И, наконец, последняя операция - присваивание одному указателю
значения другого, что и показано в программе #1.8:
/* программа # 1.8 */
# include < stdio.h>
void main()
{
char *point_Ch;
unsigned long l,*point_l;
point_l = &l;
point_Ch = (char *)point_l;
}
В последнем операторе выполнено приведение типов данных. Если этого не
сделать, то компилятор выдаст ошибку при компиляции программы.
9
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »