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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.81
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
#1

Как отличить разыменование от указателя? - C++

08.03.2012, 15:34. Просмотров 6513. Ответов 9
Метки нет (Все метки)

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

Разыменование указателя! - C++
Всем привет, объясните почему и как это работает? int (*pf)(void); int f(void) { static int count ; pf = &f; //...

Разыменование указателя this - C++
Здравствуйте, Имеется код с перегрузкой оператора "+", объясните пожалуйста, что делает эта строка: matrix sum(*this); Весь...

Разыменование указателя - C++
Есть некий указатель на объект класса? Class1 *ptr = new Class1(); Можно ли эго разыменовать на постоянной основе, так, чтобы не...

Разыменование указателя в структуре - C++
Всем привет,нужна помощь. Есть такое описание структуры: struct st{ int* value; st* next; st* prev; }; Я хочу занести...

Разыменование указателя на указатель - C++
в функцию передается указатель на указатель класса, что бы получить доступ к методам класса нужно разименовать указатель так ? MyClass...

Разыменование нулевого указателя - C++
Как вообще по стандарту ведет себя программа после разыменования нулевого указателя? Указано-ли это явно? Просто сегодня на работе...

9
NoMasters
Псевдослучайный
1906 / 1117 / 77
Регистрация: 13.09.2011
Сообщений: 3,169
08.03.2012, 15:43 #2
Указатель никого не ест. А разыменование — лишь способ получения объекта по указателю и это есть в любой книге.
1
Петррр
6148 / 3448 / 338
Регистрация: 28.10.2010
Сообщений: 5,926
08.03.2012, 15:46 #3
Указатель переменная, хранящая в себе адрес ячейки памяти.
тип *имя_переменной;
Где тип это тип данных который расположен по адресу который хранится в имя_переменной

Дейтелы, 5-е издание, 509 страница:
Операция *, обычно называется операцией разыменования или операцией косвеной адресации, возвращает синоним (т.е. псевдоним) для объекта, на который указывает ее операнд-указатель.
1
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
08.03.2012, 15:49  [ТС] #4
Цитата Сообщение от NoMasters Посмотреть сообщение
Указатель никого не ест. А разыменование — лишь способ получения объекта по указателю и это есть в любой книге.
в моих книгах нету.вы не могли бы писать имя книги ?
0
unreal
0 / 0 / 0
Регистрация: 26.02.2012
Сообщений: 118
08.03.2012, 17:27  [ТС] #5
напишите прогу в которой невозможно обойтись без указателя
0
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
08.03.2012, 17:54 #6
Цитата Сообщение от unreal Посмотреть сообщение
напишите прогу в которой невозможно обойтись без указателя
Допусти необходимо
Код
Создаем массив(кол-во элементов передается через командную строку)
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/*
 *      Создаем массив(кол-во элементов передается через командную строку)
 */
 
#include <stdio.h>
#include <stdlib.h>
 
#define MAX 10
 
int array(const int);
    
int main(int argc, char* argv[])
{
    size_t size;
    
    if ( argc != 2 )
    {
        fprintf(stderr, "%s: error arg\n", argv[0]);
        exit(1);
    }
    
    sscanf(argv[1], "
", &size);
    
    exit(array(size));
}
 
int array(const int SIZE)
{
    int* arr = NULL;
    size_t i;
    
    if ( !(arr = malloc(SIZE * sizeof *arr)) )
    {
        fprintf(stderr, "Error memory\n");
        return 1;
    }
    
    for ( i = 0 ; i < SIZE ; ++i )
    {
        arr[i] = rand() % MAX;
        printf("%5d", arr[i]);
    }
    
    printf("\n");
    
    free(arr);
    
    return 0;
}
Bash
1
2
3
4
5
6
‘‚@ANDREY-PC /c/mingw
$ gcc -o addr addr.c
 
‘‚@ANDREY-PC /c/mingw
$ addr.exe 2
    1    7
1
diagon
Higher
1936 / 1202 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.03.2012, 17:54 #7
Цитата Сообщение от unreal Посмотреть сообщение
напишите прогу в которой невозможно обойтись без указателя
Получить значение какого-нибудь участка памяти.
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
    int *p = reinterpret_cast< int * > (0xDEADBEEF);
    std::cout << *p;
}
Больше в с++ они нигде, в общем-то, не нужны.
1
go
Эксперт С++
3587 / 1367 / 130
Регистрация: 16.04.2009
Сообщений: 4,527
08.03.2012, 18:02 #8
Цитата Сообщение от go Посмотреть сообщение
sscanf(argv[1], "
", &size);
Не понимаю: почему так криво код скопировался? О_о

Добавлено через 6 минут
Цитата Сообщение от diagon Посмотреть сообщение
Больше в с++ они нигде, в общем-то, не нужны.
В Си, например, нельзя без них изменить значение в функции
1
diagon
Higher
1936 / 1202 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
08.03.2012, 18:08 #9
Цитата Сообщение от go Посмотреть сообщение
В Си, например, нельзя без них изменить значение в функции
Цитата Сообщение от diagon Посмотреть сообщение
Больше в с++ они нигде, в общем-то, не нужны.
5букв
0
silent_1991
Эксперт С++
5005 / 3063 / 149
Регистрация: 11.11.2009
Сообщений: 7,043
Завершенные тесты: 1
08.03.2012, 20:24 #10
Цитата Сообщение от diagon Посмотреть сообщение
Больше в с++ они нигде, в общем-то, не нужны.
Не согласен. Как минимум в программах, в которых используется динамический полиморфизм. Иногда, конечно, можно обходиться ссылками, но они всё таки являются не совсем полноценной заменой указателям, да и указатели как-то привычнее.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.03.2012, 20:24
Привет! Вот еще темы с ответами:

Разыменование указателя, не передается правильное значение - C++
Здравствуйте, есть следующий код: for (int i = 0; i &lt; arr.size(); i++) { const char *temp = arr.c_str(); const char...

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

Как сделать функцию от указателя на класс и указателя на метод? - C++
Не получается сделать функцию, параметрами которой являются указатель на класс и на метод. Обращаться к классу нужно именно по указателю,...

Как отличить буквы от цифр? - C++
Подразумевается ввод символов, а дальше по обстоятельствам.


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

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

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