Связь двумерных массивов с указателями — КиберПедия 

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Связь двумерных массивов с указателями

2018-01-04 179
Связь двумерных массивов с указателями 0.00 из 5.00 0 оценок
Заказать работу

Имя двумерного массива является указателем константой на массив указателей констант.

Элементами массива указателей являются указатели константы на начало каждой из строк массива.

С элементами двумерного массива можно работать с помощью индексов а можно использовать механизм указателей. В посл случае точкой отсчета может служить первый элемент строки в котором находится исконный элемент так и первый элемент двумерго массива

Между указателями и массивами существует определенная связь. Предположим, имеется массив из 100 целых чисел. Запишем двумя способами программу суммирования элементов этого массива:

long array[100];

long sum = 0;

for (int i = 0; i < 100; i++)

sum += array[i];

 

То же самое можно сделать с помощью указателей:

long array[100];

long sum = 0;

for (long* ptr = &array[0];

ptr < &array[99] + 1; ptr++)

sum += *ptr;

 

24. Массивы указателей!!!!!

Так как указатели сами являются переменными, то вы вполне могли бы ожидать использования массива указателей. Это действительно так. Мы нуждаемся в таком представлении данных, которое бы позволяло удобно и эффективно обрабатывать строки текста переменной длины.

Здесь и возникают массивы указателей. Если подлежащие сортировке сроки хранятся одна за другой в длинном символьном массиве (управляемом, например, функцией ALLOC), то к

каждой строке можно обратиться с помощью указателя на ее первый символ. Сами указатели можно хранить в массиве.

Альтернатива:

 

Операции с указателями

 

Над указателями можно выполнять унарные операции: инкремент и декремент. При выполнении операций ++ и -- значение указателя увеличивается или уменьшается на длину типа, на который ссылается используемый указатель.

 

Пример:

 

int *ptr, a[10];

ptr=&a[5];

ptr++; /* равно адресу элемента a[6] */

 

ptr--; /* равно адресу элемента a[5] */

 

 

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

 

Пример:

 

int *ptr1, *ptr2, a[10];

 

int i=2;

 

ptr1=a+(i+4); /* равно адресу элемента a[6] */

 

ptr2=ptr1-i; /* равно адресу элемента a[4] */

 

 

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

 

Пример:

 

int *ptr1, *ptr2, a[10];

 

int i;

 

ptr1=a+4;

 

ptr2=a+9;

 

i=ptr1-ptr2; /* равно 5 */

 

i=ptr2-ptr1; /* равно -5 */

 

 

Значения двух указателей на одинаковые типы можно сравнивать в операциях ==,!=, <, <=, >, >= при этом значения указателей рассматриваются просто как целые числа, а результат сравнения равен 0 (ложь) или 1 (истина).

 

Пример:

 

int *ptr1, *ptr2, a[10];

 

ptr1=a+5;

 

ptr2=a+7;

 

if (prt1>ptr2) a[3]=4;

 

 

В данном примере значение ptr1 меньше значения ptr2 и поэтому оператор a[3]=4 не будет выполнен.

Строки символов

- строки – константы.

 

- массивы char

 

-указатели на char

 

- Массивы строк

 


Поделиться с друзьями:

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.011 с.