Использование указателей в программах на языках С/С++/С# . Васильев В.Г. - 19 стр.

UptoLike

Составители: 

1.9 Указатель на указатель или адрес адреса
Объявление в программе: int **point -означает, что переменная point
используется для хранения адреса адреса. Указателю point при распределении
памяти будет выделено также 4 байта. Проиллюстрируем возможность
использования таких указателей следующей программой.
/* программа # 1.18 */
void main()
{
int a,*point_1,**point_2,***point_3;
a = 5;
point_1 = &a;/* инициализируем указатель адресом переменной а */
point_2 = &point_1; /* это адрес адреса переменной а */
point_3 = &point_2; /* это адрес адреса адреса переменной а */
***point_3 = 10; /* присваиваем переменной а значение 10 */
}
В последнем операторе выполняется запись числа по адресу адреса адреса
переменной а. В этом примере показана простая, двойная и тройная косвенные
адресации.
1.10 Динамическое выделение памяти под многомерные массивы
Часто двойная косвенная адресация используется для выделения памяти
под двумерные массивы, тройная - под трехмерные и т. д. Программа # 1.19
иллюстрирует выделение памяти под двумерный массив типа float, возврат
память OS и печать матрицы. Основная идея программы - представление
двумерного массива как совокупности некоторого числа одномерных массивов-
строк матрицы. Подробности содержатся в комментариях программы.
/* программа # 1.19 */
#include <vcl.h>
#include <conio.h>
#include <stdio.h>
#pragma hdrstop
#pragma argsused
// Протипы функций, используемых в программе
float ** Get_mem ( int n, int m );
void Del_mem ( float ** A, int n );
void print_matrix (float **A, int n, int m, char *format);
19