Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 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 будет указывать на начало массива
|