- •Группа 2. Язык программирования си
- •25 Арифметические константы.
- •26 Символьные и строковые константы.
- •29.Преобразования типов.
- •32. Операции и выражения присваивания. Условные выражения.
- •36. Операторы цикла в Си.
- •39. Структура Си-программы. Разновидности переменных.
- •40 Область действия имени. Классы памяти.
- •43. Данные типа указатель и работа с ними.
- •44. . Указатели и функции.
- •45. Указатели и массивы. Массивы указателей.
- •46. Стандартный (бесформатный) ввод-вывод.
- •47. Форматный ввод-вывод.
- •50 Работа с файлами.
43. Данные типа указатель и работа с ними.
Указатели и динамическое выделение памяти были вкратце представлены в разделе 2.2.
Указатель – это объект, содержащий адрес другого объекта и позволяющий косвенно
манипулировать этим объектом. Обычно указатели используются для работы с
динамически созданными объектами, для построения связанных структур данных, таких,
как связанные списки и иерархические деревья, и для передачи в функции больших
объектов – массивов и объектов классов – в качестве параметров.
Каждый указатель ассоциируется с некоторым типом данных, причем их внутреннее
представление не зависит от внутреннего типа: и размер памяти, занимаемый объектом
типа указатель, и диапазон значений у них одинаков5. Разница состоит в том, как
компилятор воспринимает адресуемый объект. Указатели на разные типы могут иметь
одно и то же значение, но область памяти, где размещаются соответствующие типы,
может быть различной:
• указатель на int, содержащий значение адреса 1000, направлен на область
памяти 1000-1003 (в 32-битной системе);
• указатель на double, содержащий значение адреса 1000, направлен на область
памяти 1000-1007 (в 32-битной системе).
Когда мы применяем операцию взятия адреса (&) к объекту типа int, то получаем
результат типа int*
44. . Указатели и функции.
Указатели и динамическое выделение памяти были вкратце представлены в разделе 2.2.
Указатель – это объект, содержащий адрес другого объекта и позволяющий косвенно
манипулировать этим объектом. Обычно указатели используются для работы с
динамически созданными объектами, для построения связанных структур данных, таких,
как связанные списки и иерархические деревья, и для передачи в функции больших
объектов – массивов и объектов классов – в качестве параметров.
Каждый указатель ассоциируется с некоторым типом данных, причем их внутреннее
представление не зависит от внутреннего типа: и размер памяти, занимаемый объектом
типа указатель, и диапазон значений у них одинаков5. Разница состоит в том, как
компилятор воспринимает адресуемый объект. Указатели на разные типы могут иметь
одно и то же значение, но область памяти, где размещаются соответствующие типы,
может быть различной:
• указатель на int, содержащий значение адреса 1000, направлен на область
памяти 1000-1003 (в 32-битной системе);
• указатель на double, содержащий значение адреса 1000, направлен на область
памяти 1000-1007 (в 32-битной системе).
Когда мы применяем операцию взятия адреса (&) к объекту типа int, то получаем
результат типа int*
По мере увеличения размера и сложности ваших программ вам следует разделить их на небольшие легко управляемые части, называемые функциями. Каждая функция в вашей программе должна выполнять определенную задачу. Например, если вы пишете программу платежей, можете создать одну функцию, определяющую количество часов, отработанных служащим, вторую функцию, определяющую сверхурочную оплату, третью функцию, выводящую на печать и т. д. Если программе необходимо выполнить определенную задачу, то она вызывает соответствующую функцию, обеспечивая эту функцию информацией, которая ей понадобится в процессе обработки.