Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Краткие теоретические сведения. Имя массива трактуется как указатель-константа на массивИмя массива трактуется как указатель-константа на массив. Пусть в программе объявлен массив: int X[10]; В таком случае X является указателем на нулевой элемент массива в памяти компьютера. В связи с этим истинным является отношение X= =&X[0] Отсюда следует, что для доступа к элементам массива кроме индексированных имен можно использовать разадресованные указатели по принципу имя [индекс] тождественно *(имя + индекс) Например, для описанного выше массива X взаимозаменяемы следующие обозначения элементов: X[5] или *(X+5) или *(5+ X) Поскольку X – указатель на величину целого типа, то X+5 увеличивает значение адреса на 10. В языке Си символ [ играет роль знака операции сложения адреса массива с индексом элемента массива. Теперь понятно, почему индекс первого элемента массива всегда равен нулю. Его адрес должен совпадать с адресом массива: X[0]= = *(X+0) Пример. const int N = 6; double arr[N]={23.1, -34, 90.7, 34,-45, 10.8}; double *p; Направить указатель на массив можно двумя способами: 1. р = агг; 2. р = &агг[0]; Обращения к элементу массива arr: arr[i], *(arr+i) и *(p+i) эквивалентны. Таким образом, для любых указателей можно использовать две эквивалентные формы выражений для доступа к элементам массива: arr[i] и *(аrr+1). Первая форма удобнее для читаемости текста, вторая - эффективнее по быстродействию программы. Ввод элементов массива через указатели: const int N = 6; double arr[N]={23.1, -34, 90.7, 34,-45, 10.8}; double *p; int ind; //определение индекса массива for(ind = 0; ind < N; ind++) { //Вывод номера ячейки, куда вводится значение printf(“[%d]=”,ind); // ввод значения в ind-й номер ячейки scanf(“%lf(arr+ind)); } Обращение через указатели к элементам матрицы for (i=0; i<n1; i++) for (j=0; j<n2; j++) *(*(m+i)+j) = i+j; Порядок выполнения работы 1. Изучить теоретические сведения. 2. Выполнить задание.
|