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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
MIRAMIX
2 / 2 / 1
Регистрация: 22.02.2013
Сообщений: 312
#1

Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис - C++

11.12.2014, 12:07. Просмотров 278. Ответов 2
Метки нет (Все метки)

Здравствуйте!
Есть конкретно 4 типа:
1)стрелка (->)
2)указатели (*)
3)ссылки (&)
4)2е двоеточий (:

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

например наследование это :: как я понял и пример это std::cout
из указателей понял что можно писать
C++
1
int* c
или
C++
1
int *c
и все к сожалению)) а как использовать указатели для чего они?

ссылки тоже не понял их применять к чему?

а стрелку тем более не понял.

Пожалуйста объясните хотя бы каждый по пункту

и еще когда использовать точку (.)?

конкретно ответьте что к чему.

Спасибо заранее
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.12.2014, 12:07
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прошу объяснить о ссылках,указателях,стрелке -> и двоеточиях :: очень прошу я не понял синтаксис (C++):

Прошу объяснить код С++ - C++
здравствуйте, прошу объяснить как для полного нуба простейшими словами данный кусок кода: y=150 (10010110 в двоичной) int y=150; ...

Прошу объяснить первую строку - C++
Здравствуйте, я прохожу на данный момент перегрузку операторов, в общем по теоретическому материалу я сейчас перегружаю оператор + в...

Прошу объяснить ввод символов - C++
Дело касается самых основ, но что-то ускользнуло от моего понимания. #include <iostream> using namespace std; int main() { ...

Прошу объяснить смысл оператора int** - C++
Встретил в чужом коде следующй оператор: int** вот в таком контексте: (динамическое распределение памяти): int** m = new int*; ...

Прошу объяснить работу готовой программы - C++
Что требуется: При описании решения задачи следует отдельно выделить постановку задачи с указанием входных и выходных данных и метод...

непонятная для меня ошибка прошу объяснить знающих людей - C++
Я обращаюсь с проблемой во вроде бы рабочей программе. Задача была построить программу с сортировкой массивов методами пузырька и шейкера....

2
MrGluck
Модератор
Эксперт CЭксперт С++
7510 / 4642 / 700
Регистрация: 29.11.2010
Сообщений: 12,677
11.12.2014, 12:23 #2
Это не типы, а операторы.

:: оператор области видимости.
например, мы можем объявить структуру
C++
1
2
3
4
struct A
{
    void foo();
};
для реализации этой функции где-то вне места объявления, мы должны явно указать, что она принадлежит A, т.е.
C++
1
2
void A::foo()
{}
Мы можем объявить функцию с именем foo внутри другой структуры и конфликта не будет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct A
{
    void foo();
};
 
struct B
{
    void foo();
};
 
void A::foo()
{}
 
void B::foo()
{}
Также, мы можем уточнять пространство имён. Например так:
C++
1
2
3
4
5
6
7
8
9
namespace A
{
    struct Z{};
};
 
namespace B
{
    struct Z{};
};
И обращаться через
A::Z или B::Z. Конфликтов не будет.
При использовании cout, мы явно указываем его пространство имён (а он находится в namespace std), поэтому и пишем std::cout. Здесь cout - имя объекта.

Добавлено через 2 минуты
При обращении к полям/методам структуры/класса, мы используем оператор .
C++
1
2
3
4
5
6
7
struct A
{
    int x;
};
 
A a; // объявляем структурную переменную
a.x = 2; // обращаемся к полю этой структурной переменной.
Добавлено через 5 минут
Но это при условии, что структурная переменная объявлена на стеке. А что делать, если она находится в куче?
Тогда нам нужно обращаться к полям/методам, предварительно разыменовывая переменную.

C++
1
2
3
4
5
6
7
struct A
{
    void foo(){}
};
 
A *a = new A; // объявляем указатель на структурную переменную
(*a).foo(); // обращаемся к методу этой структурной переменной.
Так как подобные обращения достаточно частые, решено было упростить синтаксис и объявить специальный оператор -> который является всего лишь сокращением (предоставляет синтаксический сахар).

таким образом, последнюю строку примера выше можно переписать как
C++
1
a->foo();
Код набирал прямо в редакторе сообщений, мог опечататься.
1
MIRAMIX
2 / 2 / 1
Регистрация: 22.02.2013
Сообщений: 312
11.12.2014, 13:55  [ТС] #3
MrGluck, Спасибо конкретно)
то есть стрелка это таже точка?

но с указателями не понял.

что значит
C++
1
void foo(int* a)
"указатель на тип int"?то есть можно это назвать интовый укпзатель?или указатель типа инт
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.12.2014, 13:55
Привет! Вот еще темы с ответами:

Очень прошу помочь... - C++
Очень прошу!!! Помогите пожалуйста срочно решить задачи!!!!Ну очень надо.... 1 задача. Дан массив. Скопировать все его элементы в...

Неправильно считает, очень прошу помочь - C++
1: #include <math.h> float epswhile(float x,float eps, float& posl,int& z) { float s=0,sl=0,d; int i=1; posl=0; ...

Очень прошу разъяснить код алгоритма Бойера-Мура - C++
#include <cstdlib> #include <iostream> #include <string> #define ALPHABET_LEN 255 #define NOT_FOUND patlen #define max(a, b)...

Я не прошу писать мне код, я прошу подсказать мне, что за структура требуется в задании - C++
Написать программу для работы по запросам оператора с приоритетной очередью запросов. Куча отображается в память двоичным деревом. ...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.