4 / 6 / 9
Регистрация: 23.03.2010
Сообщений: 77
1

Указатели

12.08.2012, 23:22. Показов 1312. Ответов 6
Метки нет (Все метки)

Здравствуйте! Так сложилось что я не понимаю как использовать указатели, всвязи с этим не могу двигаться дальше по изучению С++.

?: почему при объявлении указателя на integer, например
C++
1
int *p
, далее в программе используеться переменная p без звёздочки? Что это значит?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.08.2012, 23:22
Ответы с готовыми решениями:

Указатели и указатели на указатели, а также типы данных
Недавно начал изучать Си, перешел с Delphi. Много непонятного и пока процесс идет медленно....

Почему Лафоре использует указатели на указатели, вместо обмена значениями указателей?
Доброго времени суток! Задался теоретическим вопросом. Читал пример из книги Лафоре...

Через указатели на указатели посчитать сумму двух чисел и записать в третье
1. Через указатели на указатели посчитать сумму двух чисел и записать в третье. 2. Написать...

Указатели на указатели с числами. Почему можно присвоить число в 4-ый элемент, если массив из 2 элементов?
Есть массив int **mas; mas=new int*; // выделил место под пять строк, верно ? mas=new int;//...

6
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
12.08.2012, 23:30 2
Просто p без звёздочки — это и есть указатель на переменную типа int. Ваш кэп o7

Суть указателей. Есть память. В памяти лежат переменные. У каждой переменной есть адрес в памяти, который говорит, где именно она там лежит. При использовании переменных компилятор этот адрес подставляет неявно сам. Но если хочется, то можно ему немного помочь, сохранив адрес переменной в указателе, а потом сказав прямо, по какому адресу забирать переменную. Главная соль их в том, что с помощью указателей можно обращаться к следующей в памяти переменной, имея указатель на текущую. (Ну ещё они используются при работе с динамической памятью, потому что там компилятор не достаточно сообразителен, чтобы подставлять адреса самостоятельно; его надо тыкать носом.)

Общая схема именования переменных в С++: объявляется так, как используется. Объявление указателя можно понимать двояко:
int* p; ===> если пишем p, то получаем тип int* = указатель на int
int *p; ===> если пишем *p, то получаем тип int = переменная типа int, на которую указывает этот указатель.

Дальше — конкретные вопросы. За пять минут у меня вряд ли выйдет написать главу из учебника :)
0
DU
1497 / 1143 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 23:33 3
ну что-то запутанно расписано. как будто между int* p; и int *p; есть разница.

* скорее относится к типу а не к имени объекта.
int - это тип. целое число.
int* - тоже тип. указатель на целое число.

int i; // целое число
i = 1; // объекту с именем i присваивается новое значение (еденица)

int* p; // указатель на целое число
p = &i; // объекту с именем p присваивается новое значение (адрес переменной типа int)

аналогию улавливаете?
1
4 / 6 / 9
Регистрация: 23.03.2010
Сообщений: 77
12.08.2012, 23:34  [ТС] 4
Все теперь понял! Спасибо огромное! ))
0
DU
1497 / 1143 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
12.08.2012, 23:36 5
хорошо. почему должно использоваться со звездочкой?
и что происходит, когда перед p стоит звездочка? это вы знаете?
0
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
12.08.2012, 23:37 6
Нет, при объявлении разницы нет. Потому и "можно понимать". Это просто иллюстрация, почему запись такая.

Ну, точнее разница есть. Небольшая. Если писать
int* x, y;
то указатель тут только x, а y — это просто переменная типа int. Потому и принято при объявлении звёздочку писать рядом с именем переменной, а не типом. Но сам по себе тип "указатель на int" записывается именно как int*.
1
4 / 6 / 9
Регистрация: 23.03.2010
Сообщений: 77
12.08.2012, 23:39  [ТС] 7
Цитата Сообщение от DU Посмотреть сообщение
хорошо. почему должно использоваться со звездочкой?
и что происходит, когда перед p стоит звездочка? это вы знаете?
Извените, просто ответил ~OhMyGodSoLong~, не видил что Вы написали.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.08.2012, 23:39
Помогаю со студенческими работами здесь

Есть три переменные. Используя указатели на указатели, поменять значение максимальной и минимальной переменной
Мой код. #include <iostream> #include <stdlib.h> #include<iomanip> using namespace std; ...

Указатели на указатели, как правильно разыменовать, где ошибка?
1)Есть класс: Shape - абстрактный; у него есть классы наследники: Circle, Triangle. 2)Eсть...

Указатели на указатели: для чего они могут понадобятся?
Изучаю C++, дошёл до указателей на указатели. Там пишут что эта тема не обязательна. Для чего они...

Зачем нужны все эти указатели (или не указатели)
Зачем надо DWORD, HANDLE, LPVOID?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru