Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Aaxenon
Light Knight
106 / 29 / 3
Регистрация: 03.06.2010
Сообщений: 361
#1

Указатели - C++

29.12.2010, 12:56. Просмотров 1614. Ответов 37
Метки нет (Все метки)

нашел у Страуструпа вот такую функцию:
C++
1
2
3
4
5
6
void swap(int *p, int *q)
{
int t = *p;
*p = *q;
*q = t;
}
зачем здесь указатели, почему нельзя просто использовать переменные?и вообще для чего используются указатели, в чем необходимость их использования?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2010, 12:56     Указатели
Посмотрите здесь:

Указатели - C++
Вводится строка слов, разделенных пробелами (возможны лишние пробелы в начале и в конце строки и между словами). Скопировать в новую строку...

Указатели. - C++
#include <iostream> #include <conio.h> #define N 4 #define M 5 void main() { { int mass; for(int i = 0; i< N; i++){ ...

Указатели.... - C++
Найти наибольшее отрицательное число с четными индексами. (Создать указатель на наиболее отрицательное число среди элементов с четными...

Указатели - C++
Нифига не догоняю тему про указатели, есть книга по C/C++ но там не очень понятным языком написано Киньте плиз ссылку на хороший мануал...

Указатели - C++
Есть задание,я сделала через массив,а мне нужно переделать через указатели. #include <iostream.h> #include <stdio.h> #include...

[C++] Указатели - C++
Помогите сделать эту же программу но с использованием указателей #include "stdafx.h" #include <conio.h> #include <iostream> ...

Указатели* - C++
Объясните что происходит в последней строке , и если мои комменты не правильны поправьте пожалуйста. void order ( int* numb1, int*...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.12.2010, 13:42     Указатели #21
yanyk1n, Я так понимаю ты имеешь ввиду вот это. Одна проблема - я немного не представляю как его разыменовать)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
 
class Object
{
public:
    Object():a(0)
    {
    }
    int GetA() const
    {
        return a;
    }
private:
    int a;
};
 
std::ostream* operator <<(std::ostream& os, const Object& Ob)
{
    os<<Ob.GetA()<<'\n';
    return &os;
}
 
int main()
{
    Object Ob;
    std::cout<<Ob<<'\n';
    return 0;
}
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.12.2010, 13:43     Указатели #22
Цитата Сообщение от ForEveR Посмотреть сообщение
В отличии от передачи параметра по значению, передеча параметра по константной ссылке подразумевает во первых неизменение значения, во-вторых передачу только ссылки на объект.
Передача по значению даёт его неизменение. А передача только ссылки вместо самого объекта преследует цель сократить стековые операции и избежать лишних вызовов конструкторов/деструкторов. Так вот, это задача оптимизации, а ни как не разработки. Сделай оптимизатор, который будет подставлять константные ссылки вместо больших объектов - принесёшь пользу. А в явном виде такие ссылки вредны. Я уже наткнулся на сложности сравнения полей объектов, переданных по константным ссылкам.
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.12.2010, 13:44     Указатели #23
taras atavin, Не могу с тобой согласиться на тему вредности таких ссылок.

C++
1
2
3
4
    bool operator>(const _Myt& _Right) const
        {   // test if this > _Right
        return (_Right < *this);
        }
Реализацию STL писали плохие люди?
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.12.2010, 13:47     Указатели #24
Я пытался их юзить, так при каждом доступе к полю пришлось втыкать приведение к типу обычной ссылки. Ну и какова польза? Или хотя бы что нейтрального в этой возне?
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.12.2010, 13:48     Указатели #25
taras atavin, При доступе - не придется. Придется только при изменении, что логично и лучше такого не делать.
Nameless One
Эксперт С++
5769 / 3418 / 255
Регистрация: 08.02.2010
Сообщений: 7,446
29.12.2010, 13:50     Указатели #26
Насчет того, как можно заменить возвращение по ссылке на возвращение по указателю:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
 
class A
{
    int a;
public:
    A(int _a) : a(_a) {}
    
    friend std::ostream* operator << (std::ostream& os, const A& rhs)
    {
        os << rhs.a;
        return &os;
    }
};
 
int main()
{
    A foo(1), bar(2);
    (*(*(std::cout << foo) << bar)) << std::endl;
    return 0;
}
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
29.12.2010, 13:51     Указатели #27
Nameless One, Пасиба. Я до такого изврата как-то не додумался)
yanyk1n
4329 / 1460 / 152
Регистрация: 12.03.2009
Сообщений: 5,310
29.12.2010, 13:53     Указатели #28
Nameless One, спасибо=) теперь стала очевидна польза возврата по ссылке
oxotnik
29.12.2010, 14:21
  #29

Не по теме:

За последние N месяцев это единственная нормальная тема, в разделе С++, за что автору респект и уважуха.

Nameless One
29.12.2010, 14:23
  #30

Не по теме:

Цитата Сообщение от oxotnik Посмотреть сообщение
За последние N месяцев это единственная нормальная тема, в разделе С++, за что автору респект и уважуха.
ответ на вопрос, заданный в этой теме, можно найти в любой книжке по С/С++. Я думаю, даже в самоучителях для чайников...

oxotnik
29.12.2010, 14:32
  #31

Не по теме:

Nameless One, на бесптичье и попа соловей
а тема будет интересна хотя бы начинающим, которые путаются в ссылках и указателях, прочитают, может чего то поймут

Nameless One
29.12.2010, 14:51
  #32

Не по теме:

oxotnik, оно то может быть и так, только я все-равно считаю, что для начинающего нет ничего лучше хорошей книжки. Форум - вещь хорошая, но знания должны быть систематическими

oxotnik
29.12.2010, 14:53
  #33

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
для начинающего нет ничего лучше хорошей книжки. Форум - вещь хорошая, но знания должны быть систематическими
человек спросил непонятные моменты, ему объяснили, видно что он читает и пытается разобраться, следующий новичок скорей всего тоже будет читать, потом в форум полезет и наткнется на эту тему

Aaxenon
29.12.2010, 15:14  [ТС]
  #34

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
ответ на вопрос, заданный в этой теме, можно найти в любой книжке по С/С++. Я думаю, даже в самоучителях для чайников...
может в самоучителях для чайников есть, а в книге Страуструпа нет..к сожалению, я не нашел книги, где максимально четко описаны такие спорные моменты, да еще и с примерами..у меня на винте десяток книг, но на форуме мне за 15 минут хорошо объяснили и я рад, что могу спокойно продолжать читать Страуструпа, а не провести весь день, ища ответ на этот вопрос, и, в результате, не факт, что нашел бы

silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
29.12.2010, 15:46     Указатели #35
Эх, не надо бы новичку Страуструпа читать... Ну не писатель он, не учитель, так сказать, по призванию...
Aaxenon
29.12.2010, 16:19  [ТС]
  #36

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Эх, не надо бы новичку Страуструпа читать... Ну не писатель он, не учитель, так сказать, по призванию...
как бы не совсем новичок..синтаксис знаю, основные пункты знаю, пора, так сказать, глубже копать..

silent_1991
29.12.2010, 16:23
  #37

Не по теме:

Ну так глубже копать - это всё равно учиться. Тем более указатели - это, не в обиду, начальный уровень. Одно из основных средств, без которых дальше - ни-ни.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2010, 16:40     Указатели
Еще ссылки по теме:

Указатели - C++
Определите переменную х как массив указателей на функцию,который имеет два параметра типа int, и возвращает результат типа указатель на...

Указатели - C++
Что делает следующий фрагмент кода? В чем состоит логическая ошибка? (Отметим, что операция индексирования () применена к указателю pia...

Указатели - C++
Написать программу на языке C Задание: введите с клавиатуры 3 числа и выведите их на экран в порядке возрастания. Программу написать с...

Указатели - C++
С одномерным массивом, состоящим из n вещественных элементов, вы-полнить следующее: Преобразовать массив таким образом, чтобы сначала...

Указатели в С++ - C++
Очень прошу обьясните почему здесь value будет = 3200, а не = адресу памяти. код: int main() { int balance; int *balptr; ...


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

Или воспользуйтесь поиском по форуму:
Aaxenon
29.12.2010, 16:40  [ТС]     Указатели
  #38

Не по теме:

Цитата Сообщение от silent_1991 Посмотреть сообщение
Ну так глубже копать - это всё равно учиться. Тем более указатели - это, не в обиду, начальный уровень. Одно из основных средств, без которых дальше - ни-ни.
окей..

Yandex
Объявления
29.12.2010, 16:40     Указатели
Ответ Создать тему
Опции темы

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