Языки программирования для численных методов. Глушакова Т.Н - 62 стр.

UptoLike

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: