Указатели. Массивы как указатели

ВАЖНЫЕ замечания

Решение каждой задачи предполагает написание полной программы на Си. Эта программа должна читать входные данные из стандартного входного файла, а затем выдавать ответ в стандартный выходной файл. При запуске с терминала это будет означать ввод с клавиатуры и вывод на экран.

Для успешного решения задачи пока достаточно, чтобы программа правильно работала на правильных входных данных.

Обязательно сохраняйте файлы под именами, соответствующими задачам, например:

Задачи для разбора с демонстрацией

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]).