Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_po_poryadku_proga.doc
Скачиваний:
4
Добавлен:
15.04.2019
Размер:
1.07 Mб
Скачать

12.5. Указатели и массивы

Имя массива - это константный указатель

Адрес массива можно присвоить обычному указателю int *pa=a;

pa - адрес a[0], *(pa+1) есть содержимое a[1] a+i - адрес a[i], *(pa+i) - содержимое a[i].

Элемент массива можно изображать как в виде указателя со смещением, так и в виде имени массива с индексом.

Между именем массива и указателем, выступающим в роли имени массива, существует одно различие.

Указатель - это переменная, поэтому можно написать pa=a или pa++.

Имя массива не является переменной, и записи вроде a=pa или a++ не допускаются.

12.6. Массивы-параметры

Для передачи массивов-параметров функций формальный параметр массив можно объявить тремя способами:

-указатель, тип которого будет совпадать с типом элементов массива; int function (int *a, int n) {……}-массив с фиксированной длиной; int function ( int a[20]) {……} -безразмерный массив. int function ( int a[], int n) {……}

Когда двумерный массив используется как параметр функции, необходимо передать указатель на первый элемент. Функция, получающая двумерный массив должна как минимум определять размерность первого измерения. Формальный параметр двумерный массив можно объявить следующими способами: ·        двумерный массив с фиксированной длиной; int function ( int ma[100][100]){……} Для использования этой функции двумерный массив должен быть описан с максимальной размерностью int Ma[100][100], но можно обрабатывать размерности n*m.

·        двумерный с фиксированной размерностью первого измерения, т.е. второй размерностью; int func ( int ma[][100]) {…} Для использования этой функции двумерный массив должен быть описан со второй размерностью =100

·        указатель, которому при вызове буде соответствовать адрес первого элемента двумерного массива; int func ( int *ma) {……} В этом случае массив должен быть точно такой же размерности, как при вызове.

·        указатель на двумерный массив, тип которого будет совпадать с типом элементов массива. int func ( int **ma) {……} - двумерный массив должен быть описан как указатель на указатель, для int **ma необх.ВыделитьПамятьНекоторойРазмерности n*m,но можно<= n*m размерности <= n*m.

12.7. Указатели на константы и константные указатели.

Константный указатель - адрес в памяти, где хранится это число. Адрес в памяти постоянен, и такой указатель указывает, всегда на одну и ту же ячейку памяти, а содержимое этой ячейки может меняться.

Указатель на константу - адрес в памяти, где хранится элемент. Адрес, где хранится этот элемент, может изменяться, а содержимое этой ячейки - нет.

char*p; chars[] = 'Ci++'; const char* pc = s; //указатель на константу pc[3] = 'g’; // ошибка: рс указывает на константу рс = р; // правильно

char *const cp = s; // констант-й указатель ср[3] = 'а, //правильно ср = р; //ошибка: ср - константа const char *const cpc = s; // константный указатель на константу срс[3] = 'а'; ошибка: срс указывает на константу срс=р; //ошибка: срс является константой

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]