Реферат: Массивы 2
р = &а[0]; => р = а;
*(а+і) ^ а[і] &а[і] => а+і
Результат буде один і той же. Перевага використання другого варіанту полягає в тому, що арифметичні операції над покажчиками виконуються швидше, якщо ми працюємо з підряд йдучими елементами масиву. Якщо ж вибір елементів масиву випадковий, то швидше і більш наочна робота з індексами.
Між ім'ям масиву і покажчиком, -виступаючим в ролі імені масиву, існує одна відмінність. Покажчик змінна, тому можна написати р = а або р++. Але ім'я масиву не є змінною, і записи типу а = р або а++ не допускаються.
Дуже часто доводиться працювати над обробкою текстів, т. е. з масивами рядків. Як ми пам'ятаємо, в мові С рядок - це масив символів, що закінчується нульовим байтом. Розглянемо дві програми, що реалізовують практично, одні і ті ж дії.
#incl ude <std io. h>
#include <ctype.h>
void main()
{ char *p, str[]="String From Letters in Different Registers";
/* Рядок, що Складається з Букв в Різних Регістрах; */ int і=0; printf( "Рядок Буде Надрукований Заголовними Буквами");
while (str[i]) printf("%c", toupper(str[i++]));
p=str; printf(" Рядок Буде Надрукований Малими Буквами");
while (*p) printf("%c", tolower(*p++)); }
Якщо в цих прикладах замінити рядок на англійській мові на рядок, набраний російськими буквами, то ніякого перетворення букв в рядкові або, навпаки, в прописні не станеться. Це пов'язано з тим, що стандартні функції toupper() і tolower () аналізують значення
10 аргументу і повертають те ж саме значення, якщо він не є відповідно малою або великою буквою латинського алфавіту. Якщо ж аргумент є малою буквою латинського алфавіту, то значенням функції toupper() буде відповідна велика буква (точніше, код цієї букви). Функція tolower () змінює код лише великих букв латинського алфавіту. Прототипи цих функцій знаходяться в заголовному файлі ctype.h.
МАСИВИ ПОКАЖЧИКІВ
Покажчики, як і змінні будь-якого іншого типу, можуть об'єднуватися в масиви. Оголошення масиву покажчиків на 10 цілих чисел має вигляд int *x[10] ;
Кожному з елементів масиву можна привласнити адресу; наприклад, третьому елементу привласнимо адресу цілої змінної у:
х[2]=&у;
щоб знайти значення змінною у, можна написати *х(2].
Наведемо приклад використання масиву покажчиків. Частіше за все це буває зручно при обробці масиву рядків.
/* you must run. exe-file to watch the rezult of this program. Перегляд файлів в поточному каталозі з одним з шести розширень */
#include <std io. h >
#include <string.h> ^include <stdlib. h>
#include <conio. h>
main()
{char ch, s[80], *ext[]={"exe", "corn", "cpp", "c", "pas", "*"};
clrscr();
for(;;) {do { printf( "Файли з розширенням:^");
printf("1. exe\n"); "printf( 2. com\n"); "printf( 3. cpp\n"); "pnntf( 4. з \ n ");
printf("5. pas\n"); printf("6. *\n"); //any extension printf("7. quit\n");