ВУЗ:
Составители:
62
}
На самом деле, вместо описания параметра str как массива,
правильнее его описать как указатель на char (char*str). Понятие
«указатель на char» охватывает больше случаев представления строки:
динамически выделенная память возвращается через указатели, в качестве
указателя на char рассматривается любая константная строка в программе
(строка в кавычках ). Однако записанную ранее функцию spacetoul нельзя
вызывать со строкой в кавычках в качестве параметра, так как она
изменяет содержимое строки, а такая попытка для константной строки в
кавычках некорректна.
Константными строками можно инициализировать переменные типа
char, например
char*constname = “Вадим”;
Здесь вызов функции spacetoul(char*constname) по-прежнему
некорректен.
Удобство строки, завершенной нулем , в том, что такой формат
позволяет хранить строки неограниченной длины, хотя саму длину может
оказаться определить довольно долго (надо посчитать количество
символов до нуля – это делает стандартная функция strlen()).
6.3. Адресная арифметика
Язык C кроме присвоения указателю адреса переменной (через
операцию &) и другого указателя, сравнения указателей на равенство и
неравенство , позволяет также прибавлять и вычитать целочисленные
значения к указателю , сравнивать 2 указателя на больше и меньше и
вычитать их друг из друга.
Эти возможности называют адресной арифметикой.
Прибавление к указателю целого числа означает смещение указателя
на заданное количество ячеек памяти вперед, а вычитание целого числа –
смещение назад. Причем размер ячейки равен размеру того типа данных,
на который определен указатель.
Пусть , например, в памяти последовательно хранятся целые числа, и
на некоторое число указывает указатель p:
62
}
На самом деле, вместо описания параметра str как массива,
правильнее его описать как указатель на char (char*str). Понятие
«указатель на char» охватывает больше случаев представления строки:
динамически выделенная память возвращается через указатели, в качестве
указателя на char рассматривается любая константная строка в программе
(строка в кавычках). Однако записанную ранее функцию spacetoul нельзя
вызывать со строкой в кавычках в качестве параметра, так как она
изменяет содержимое строки, а такая попытка для константной строки в
кавычках некорректна.
Константными строками можно инициализировать переменные типа
char, например
char*constname = “Вадим”;
Здесь вызов функции spacetoul(char*constname) по-прежнему
некорректен.
Удобство строки, завершенной нулем, в том, что такой формат
позволяет хранить строки неограниченной длины, хотя саму длину может
оказаться определить довольно долго (надо посчитать количество
символов до нуля – это делает стандартная функция strlen()).
6.3. Адресная арифметика
Язык C кроме присвоения указателю адреса переменной (через
операцию &) и другого указателя, сравнения указателей на равенство и
неравенство, позволяет также прибавлять и вычитать целочисленные
значения к указателю, сравнивать 2 указателя на больше и меньше и
вычитать их друг из друга.
Эти возможности называют адресной арифметикой.
Прибавление к указателю целого числа означает смещение указателя
на заданное количество ячеек памяти вперед, а вычитание целого числа –
смещение назад. Причем размер ячейки равен размеру того типа данных,
на который определен указатель.
Пусть, например, в памяти последовательно хранятся целые числа, и
на некоторое число указывает указатель p:
Страницы
- « первая
- ‹ предыдущая
- …
- 60
- 61
- 62
- 63
- 64
- …
- следующая ›
- последняя »
