Указатели. Массивы как указатели
ВАЖНЫЕ замечания
Решение каждой задачи предполагает написание полной программы на Си. Эта программа должна читать входные данные из стандартного входного файла, а затем выдавать ответ в стандартный выходной файл. При запуске с терминала это будет означать ввод с клавиатуры и вывод на экран.
Для успешного решения задачи пока достаточно, чтобы программа правильно работала на правильных входных данных.
Обязательно сохраняйте файлы под именами, соответствующими задачам, например:
- 21.1.c
Задачи для разбора с демонстрацией
21.0.1. Совмещение массивов 21.0.1.c.
21.0.2. Передача указателя на массив 21.0.2.c.
Задачи для решения в машинном зале
21.1. Написать функцию
void max( int *a, int *b)
которая по указателю a записывает максимум из значений, хранящихся по указателям a и b. Объявить в main переменные i,j, ввести их значения, и обработать их с помощью функции max.
21.2. Написать функцию
void maxn( int *x, int n)
которая находит максимум в массиве, который начинается с адреса x, имеет длину n, и записывает этот максимум в серединный элемент массива x.
21.3. Написать функцию
void copy( int *src, int *dst, int n)
которая копирует первые n элементов начиная с адреса src в фрагмент памяти начиная с адреса dst. Другими словами, первые n элементов массива src записывает в начало массива dst;
Домашнее задание
21.10. Прочитать раздел книжки про указатели. Затвердить смысл операций * (обращение по адресу) и & (получение адреса).
21.11. Написать функцию int max(int *a, int *b), которая возвращает максимальное из двух чисел, расположенных по указателям a и b. Использовать ее для сортировки массива x из N чисел. Убедиться, что можно с одинаковым успехом получать указатель на i-й элемент массива x как x+i, или как &(x[i]).