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

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

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





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

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; просмотров: 413. Нарушение авторских прав; Мы поможем в написании вашей работы!




Шрифт зодчего Шрифт зодчего состоит из прописных (заглавных), строчных букв и цифр...


Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...


Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...


Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

ТРАНСПОРТНАЯ ИММОБИЛИЗАЦИЯ   Под транспортной иммобилизацией понимают мероприятия, направленные на обеспечение покоя в поврежденном участке тела и близлежащих к нему суставах на период перевозки пострадавшего в лечебное учреждение...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

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

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