Студопедия — Связь массивов и указателей
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Связь массивов и указателей






Если объявить

int mas[100], *р, а;

то:

1) для массива отводится память в адресном пространстве под 100 элементов типа int;

2) память отводится под указатель-константу с именем MAS, значением указателя является адрес массива;

3) память отводится под указатель-переменную с именем р.

Операция инициализации указателя может осуществляться только операцией "присвоить адрес некоторой переменной".

p = &a;

p = &mas[0]; или p = mas;

или присвоением p = NULL;, где NULL - константа, определенная через define в файле NULL.H.

Допустимо р=0, но не рекомендуется.

Ошибкой являются:

а=10;

р=а; // где р - указатель. Присвоение невозможно, так как типы int* и int.

p=10; // присвоение невозможно, так как типы int* и const int.

Указателю нельзя присваивать целые значения, но можно складывать и вычитать указатель и целые числа.

р+=10; - экв. р = р+10; - увеличение адреса на 10* масштабный множитель.

р-=2; уменьшение на 2* масштаб множителя.

р+=10; увеличивает на 10 содержимое ячейки, на которую ссылается р.

Например:

Если р=mas; то р+=10; эквивалентно р=р+10 и эквивалентно присвоению р=&mas[10];

*р+=10; эквивалентно mas[0]=mas[0]+10;

Если 2 указателя ссылаются на элементы одного и того же массива, то допускаются операции отношения над ними: = =;!=; <, >, и т.д.

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

Допускается вычитание указателей.

 

Например, разработаем функцию вычисления длины строки:

int strlen(char *s)

{ char *p = s;// объявлен указатель и инициирован адресом

// массива символов.

while(*p! = '\0') p++;







Дата добавления: 2015-08-12; просмотров: 374. Нарушение авторских прав; Мы поможем в написании вашей работы!



Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

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

ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

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

ТЕОРИЯ ЗАЩИТНЫХ МЕХАНИЗМОВ ЛИЧНОСТИ В современной психологической литературе встречаются различные термины, касающиеся феноменов защиты...

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

Типы конфликтных личностей (Дж. Скотт) Дж. Г. Скотт опирается на типологию Р. М. Брансом, но дополняет её. Они убеждены в своей абсолютной правоте и хотят, чтобы...

Гносеологический оптимизм, скептицизм, агностицизм.разновидности агностицизма Позицию Агностицизм защищает и критический реализм. Один из главных представителей этого направления...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия