Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

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






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





Например, при объявлении указателя типа int компилятор "предполагает", что все значения, на

которые ссылается этот указатель, имеют тип int. С++-компилятор попросту не позволит

Выполнить операцию присваивания с участием указателей (с обеих сторон от оператора

Присваивания), если типы этих указателей несовместимы (по сути не одинаковы).

Например, следующий фрагмент кода некорректен.

int *р;

Double f;

//...

р = &f; // ОШИБКА!

Некорректность этого фрагмента состоит в недопустимости присваивания double-указателя

int-указателю. Выражение &f генерирует указатель на double-значение, а р — указатель на

Целочисленный тип int. Эти два типа несовместимы, поэтому компилятор отметит эту

Инструкцию как ошибочную и не скомпилирует программу.

Несмотря на то что, как было заявлено выше, при присваивании два указателя должны быть

Совместимы по типу, это серьезное ограничение можно преодолеть (правда, на свой страх и

Риск) с помощью операции приведения типов. Например, следующий фрагмент кода теперь

Формально корректен.

int *р;

Double f;

//...

р = (int *) &f; // Теперь формально все ОК!

Операция приведения к типу (int *) вызовет преобразование double- к int-указателю.

Int main()

{

Double x, у;

int *p;

x = 123.23;

p = (int *) &x; // Используем операцию приведения типов для присваивания

Double-указателя int-указателю.

у = *р; // Что происходит при выполнении этой инструкции?

cout << у; // Что выведет эта инструкци

11. char str[80];

char *p1;

p1 = str; Таким образом, при

выполнении присваивания p1 = str адрес stг[0] присваивается указателю p1. Это и есть

ключевой момент, который необходимо четко понимать: неиндексированное имя массива,

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

Date: 2016-07-25; view: 270; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.007 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию