Форум программистов, компьютерный форум, киберфорум
Наши страницы

работа с указателями - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ поиск маршрута. Задача на С#. http://www.cyberforum.ru/cpp-beginners/thread33222.html
Задача следующая: Некая географическая карта местности задана квадратной сеткой определенного масштаба. В узлах сетки известна высота над уровнем моря. Между соседними узлами высота меняется плавно....
C++ Програма с .тхт файлом вот код #include <windows.h> #include <stdio.h> #include <conio.h> FILE *f; typedef struct tagINFO { http://www.cyberforum.ru/cpp-beginners/thread33219.html
C++ Обработка русского текста в консольном режиме.
Приветствую всех, Собственно вопрос: Создаю строковую переменную, посредством cin заношу в неё текст на русском, распечатываю cout'ом и получаю хлам. Типа ввоже йцукен, получаю ©жгЄҐ* В...
Курсач на С++(должен был сдать месяц назад!!(((() C++
1.Известно, что в Москве самыми теплыми являются дни с 15 июля по 15 августа. Для проведения фестиваля были выбраны 7 следующих подряд дней, наиболее теплых по данным за последние 10 лет. Составить...
C++ Автокорреляция http://www.cyberforum.ru/cpp-beginners/thread33208.html
Ув. форумчани напишите пожалуйста код на С++ Builder функцию автокорреляции или как по др. преобразование Фурье 2D.
C++ текстовый файл поскажите пожалуйста почему не работает. хочу написать первые символы строк если они удовлетворяют условию в конец того же файла из которого они считываются. if ((newfile = fopen(name, "a+")) !=... подробнее

Показать сообщение отдельно
kazak
3048 / 2369 / 160
Регистрация: 11.03.2009
Сообщений: 5,436
Завершенные тесты: 1
08.05.2009, 12:40
Массивы и указатели в С++ тесно связаны и могут быть использованы почти эквивалентно. Имя массива можно понимать как константный указатель. Указатели можно использовать для выполнения любой операции, включая индексирование масива.
Предположим, что объявлены массивы целых чисел b[5] и целая переменная указатель bPtr. Поскольку имя массива(без индекса) является указателем на первый элемент массива, мы можем задать указателю bPtr адреспервого элемента массива b с помошью оператора
bPtr = b;
Это эквивалентно присваиванию адреса первого элемента массива следующим образом
bPtr = &b[0]
Сослаться на элемент массива b[3] можно с помощью выражения указателя
*(bPtr + 3)
В приведенном выражении 3 является смещением указателя. Когда указатель указыает на начало массива, смещение показывает, на какой элемент массива должна быть ссылка, так что значение ссмещения эквивалентно индексу массива. Предыдущую запись называют записью указатель-смещение. Скобки необходимы, потому что приоритет * выше, чем приоритет +. Без скобок верхнее выражение прибавило бы 3 к значению выражения *bPtr (т.е. 3 было бы прибавленно к b[0] в предположении, что bPtr указывает на начало массива). Поскольку элемент массива может быть указан указателем выражением, адрес
&b[3]
может быть записан также выражением указтелем
bPtr + 3
Сам массив можно рассматривать как указатель и использовать в арифметике указателей. Например, выражение
*(b + 3)
тоже ссылается на элемент массива b[3]. Вообще все выражения с индексами массива могли бы быть записаны с помощью указателей и смещений. В этом случае запись указатель-смещение применялась бы к имени массива как к указателю. Заметим, что предыдущий оператор никоим образом не модифицирует имя массива; b продолжает указывать на первый элемент массива.


Источник: Х.Дейтел, П.Дейтел "Как программировать на С++"
Rififi, и где мы переврали?
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru