КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Общая форма объявления структуры
П-1 П-2 Ьш, Массивы указателей Свободным называется двухмерный массив (матрица), размер строк которого может быть различным. Преимущество использования свободного массива заключается в том, что не требуется отводить память ЭВМ с запасом для размещения строк максимальной возможной длины. Фактически, свободный массив представляет собой одномерный массив указателей на одномерные массивы данных. Рассмотрим вначале как можно разместить в оперативной памяти матрицу со строками одинаковой длины. Чтобы создать в памяти ЭВМ двухмерный массив необходимо: 1) выделить блок оперативной памяти под массив указателей, 2) выделить блоки оперативной памяти под строки матрицы — одномерные массивы и 3) записать адреса строк в массив указателей. Графическое представление такой структуры хранения информации представлено на рис. 1.8. Обращение к элементу массива будет осуществлятся следующим образом: где / — номер строки;7 — номер столбца. МАССИВ УКАЗАТЕЛЕЙ *Ь[п] ХРАНЕНИЕ АДРЕСОВ СТРОК
m - количество столбцов n - количество строи Рис. 1.8 Фрагмент программы реализации двухмерного массива со строками одинаковой длины показан ниже. #include <alloc.h> #include <stdio.h> main() float **b; int n, m, i, j; printf ("\n Введите количество строк: п="); scanf ("%d", &n); printf ("\n Введите количество столбцов: m="); scanf ("%d", &m); b=(float**)malloc(n*sizeof(float*)); /*Выделяется блок оперативной памяти */ /*для хранения адресов строк матрицы.*/ /* Используется двойная косвенная адресация.*/ for(i=0; i<=n-l; i++)
b[i]=(float*)malloc(n*sizeof(float)); /*B цикле динамически выделяются блоки*/ /*оперативной памяти под строки. Адреса /*строк записываются в массив указателей for(i=0; i<=n-l; i++) for(j=0; j<=m-l; j++) { printf ("\n введите элемент b[%d][%d]=", i + 1, j+1); scanf ("%f", &b[i][j]); } for(i=0; i<=n-l; i++) for(j=0; j<=m-l; j++) { b[i] [j]= /* обработка массива */ } } Для размещения в оперативной памяти матрицы со строками разной длины необходимо ввести дополнительный массив т, в котором будут храниться размеры строк. Фрагмент программы, в которой реализуется динамическое размещение такой матрицы приведен ниже [12]. #include <stdio.h> #include <alloc.h> main() { float **b; int i, j, n; int *m; printf("\n Введите количество строк: п= "); scant("%u", &n); b=(float **)malloc(n*sizeof(float*)); m=(int *)malloc(n*sizeof(int)); for(i=0; i<=n-l; i++) { printf("\n Введите длину строки: m[%u]=", i+1); scant("%u", m+i) } for(i=0; i<=n-l; i++) b [i] = (float*)malloc(m[i]*sizeof(float)); for(i=0; i<=n-l; i++) for(j=0; j<=m[i]-l; j++) {
printf("\n Введите элемент b[%u][%u] i+1, i+1); scant("%f", &b[i][j]); } for(i=0; i<=n-l; i++) for(j=0; j<=m[i]-l; j++) { b[i] [j]=... } Графическое представление двухмерного массива со строками разной длины представлено на рис. 1.9. МАССИВ УКАЗАТЕЛЕЙ *Ь[п] ХРАНЕНИЕ АДРЕСОВ СТРОК О Строка О
Строка т[1]-1 Строка 2 т[2]-1 Строка п-2 т[п-2] С т р ока п-1 т[0]-1 т[п] - массив для хранения размеров строк л - количество строк т[п-1] Рис. 1.9 §1.23. Структуры Структура — это объединение одного или нескольких объектов, возможно различного типа, под одним именем, которое является типом структуры. В качестве объектов могут выступать переменные, массивы, указатели и другие структуры. Структуры позволяют трактовать группу связанных между собой объектов не как множество отдельных элементов, а как единое целое. Пример — строка платёжной ведомости, которая содержит следующие сведения о работнике: полное имя, адрес, зарплату и так далее. Таким образом, структура — сложный тип данных, составленный из простых типов.
После закрывающей фигурной скобки «}» в объявлении структуры обязательно ставится точка с запятой.
Дата добавления: 2014-11-29; Просмотров: 507; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |