Лабораторная работа: Массивы и указатели в языке программирования Си

for (p=&a[9]; p>=&a[0]; p--) /*еще один способ вывода элементов в обратном порядке*/

printf("/n%d",*p);

}

Указатели и двумерные массивы

Предположим, что у нас есть описания:

int z[4][2]; /**/

int pz; / **/

Тогда pz=z указывает на нулевой столбец нулевой строки, т.е.

pz=&z[0][0];

Пример 7. Вывести на экран значения нулевого, второго и четвертого элементов массива.

#include <stdio.h>

int a[]=(10,20,30,40,50,60); /*объявление и инициализация массива а*/

main()

{

for (p=a,i=0; p+i<=a+4; p++, i++)

printf("%d"; (p+i)); / *вывод на экран значений нулевого, второго и четвертого элементов*/

}

В цикле происходит одновременное увеличение указателя р и индекса i на единицу, вследствие чего на экран после нулевого элемента выводится второй, и затем четвертый. Поскольку элементы двумерного массива хранятся в памяти ЭВМ по строкам, то

pz+1 = &z[0][1], pz+2 = &z[1][0], pz+3 = &z[1][1] и т.д.


Двумерный массив описан как массив массивов. Если z является именем массива, то каковы имена четырех строк, каждая из которых является массивом из двух элементов? Имя первой строки z[0], второй - z[1], и т.д. Однако имя массива является также указателем на этот массив в том смысле, что оно ссылается на первый его элемент. Значит:

z[0]=&z[0][0], z[1]=&z[1][0], z[2]=&z[2][0], z[3]=&z[3][0].

Пример 8. Задана матрица а. Вывести на экран элементы главной диагонали, первой строки и значений первых элементов каждой строки матрицы, применив для этого указатели.

#include <stdio.h>

int a[3][3]={{10,20,30},

{40,50,60},

{70,80,90}};

/*объявление и инициализация двумерного массива*/

int *pa[3]={a[0],a[1],a[2]};

/*объявление и инициализация указателя ра на строки массива а и присвоение начальных значений : pa[0]=a[0]; pa[1]=a[1]; pa[2]=a[2]*/

К-во Просмотров: 297
Бесплатно скачать Лабораторная работа: Массивы и указатели в языке программирования Си