Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107

Использование указателя без знака звездочки

07.01.2018, 23:42. Показов 1905. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
К примеру есть указатель:
C++
1
int a = new int(6);
Для вывода содержания указателя, надо писать *a, для адреса &a, а что будет выводиться, если ввести просто a?
У меня выводится какой то другой адрес, не адрес, куда ссылается указатель.
Заранее благодарен!
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.01.2018, 23:42
Ответы с готовыми решениями:

Указатели. вывод указателя без знака &
везде есть информация о том, что "*" выводит значение указателя, а "&" - адрес. но если объявить указатель и вывести его без знака &,...

Использование нужного указателя без динамического привидения типов
Добрый день. В общем объяснять я никогда не умел, но попробую. Мне надо как-то передать в функцию указатель на базовый класс так, чтобы...

Преобразование кода без указателя в код с использованием указателя
Правильно ли выполнил? Исходный код без указателя #include <iostream> #include <cstdlib> #include <fstream> using...

13
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
08.01.2018, 00:10
Цитата Сообщение от jonikster Посмотреть сообщение
int a = new int(6);
Неправильно, тип a должен быть int*.
Операция &возвращает адрес хранящегося в памяти значения. Тип возвращаемоего значения для неё - как раз указатель.
Например:
C++
1
2
3
4
5
6
7
8
9
10
11
12
int x = 5;
cout << &x; // адрес переменной x
cout <<*(&x); // содержимое находящееся по адресу переменной x, т.е. значение x
int *px = &x; // ну и конечно адрес - это указатель
cout << *px; // x
cout << px; // значение указателя px, т.е. адрес, который в нём хранится, т.е. адрес x
cout << &px; // адрес указателя px
cout << *(&px); // адрес x
int **ppx = &px; // указатель на указатель.
cout << **ppx; // x
cout << *ppx; // адрес x
cout << ppx; // адрес px
Итого: значением указателя является адрес (куда он ссылается). Выводите его = выводите этот адрес.
Берёте адрес указателя - получаете указатель на указатель, ссылающий на исходный.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
08.01.2018, 00:26  [ТС]
Вы не поняли о чём я.
Вот есть указатель:
C++
1
int *a = new int(6);
Дальше
C++
1
*a
Значение по указателю *a
[CPP]&a
{/CPP]
Адрес значения *a
C++
1
a
А на что указывает этот адрес?
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
08.01.2018, 00:30
jonikster, &x - это не адрес *x, это адрес x. Если x указатель и вам нужее адрес *x, то x и есть этот адрес. По сути адрес и указатель - это почти одно и то же, но обычно указателем называют переменную, хранящую этот адрес.
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
08.01.2018, 00:33
Цитата Сообщение от jonikster Посмотреть сообщение
для адреса &a
Неправильно. Для адреса надо писать a. Это для адреса самого указателя нужно писать &a, но зачем тебе адрес указателя?

Добавлено через 49 секунд
Когда для работы с адресной арифметикой в массиве тебе нужно значение адреса?
0
 Аватар для Herji
299 / 208 / 174
Регистрация: 11.05.2016
Сообщений: 655
08.01.2018, 00:34
Цитата Сообщение от jonikster Посмотреть сообщение
1
a
Цитата Сообщение от jonikster Посмотреть сообщение
А на что указывает этот адрес?
на первый элемент массива, если я правильно понял
0
277 / 226 / 93
Регистрация: 27.06.2016
Сообщений: 639
08.01.2018, 00:37
Herji, он не массив выделил, а одно значение. Технически конечно да, на первый элемент, но все равно.
1
 Аватар для Herji
299 / 208 / 174
Регистрация: 11.05.2016
Сообщений: 655
08.01.2018, 00:52
Цитата Сообщение от alex white Посмотреть сообщение
он не массив выделил, а одно значение.
Спать пора, скобок не различаю) адрес шестерки, конечно же; хотя да, будь там массив всё одно - первый элемент

Добавлено через 3 минуты
Хотя нужно бы просто вникнуть через литературу какую, потому как будут потом еще приколы с разыменованием аля
C++
1
2
char *c="wda";
 std::cout << c;
и с массивами тоже не очевидно с первого взгляда
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.01.2018, 00:56
Цитата Сообщение от jonikster Посмотреть сообщение
Для вывода содержания указателя, надо писать *a, для адреса &a, а что будет выводиться, если ввести просто a?
Выведется значение указателя. Значение указателя это адрес того объекта значение которого называется значением по указателю. То есть, данные значения отличаются приставкой "по". Это обычная практика. Если пока непонятно то оставьте это "на". До поры. А пока возьмите простой массив int и потыкайте в него указателем. Начиная с головы. Пораспечатывайте адреса (сами указатели, то есть) и значения по ним (то есть, значения массива). Всё не так сложно как кажется, но надо, это потрогать и пару ночей с этим переспать.
И не смотрите пока на char* а то вон Herji, предупреждает о приколах:
Цитата Сообщение от Herji Посмотреть сообщение
Хотя нужно бы просто вникнуть через литературу какую, потому как будут потом еще приколы с разыменованием аля
это пока не надо.
0
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9007 / 4708 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
08.01.2018, 01:11
И ещё:
Цитата Сообщение от IGPIGP Посмотреть сообщение
для вывода содержания указателя, надо писать *a
это не верно. Указатель содержит своё значение. То есть a содержит а - адрес.
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
int a(5),  *pa(&a);
cout<<pa<<endl;//09EF8B0 у меня (у вас будет что-то вроде того)
system("pause");
return 0;
}
А вот по этому указателю (по адресу 09EF8B0) лежит значение по указателю и это 5. Извлекается при помощи штопора звёздочки: cout<<(*pa);//5. Почему? Потому что жизнь, это боль.
0
55 / 13 / 2
Регистрация: 26.10.2014
Сообщений: 1,107
08.01.2018, 01:15  [ТС]
Herji, увы, по C++ нет простых книг. Моя книга - интернет!
Т.е, правильно ли я понял, если указатель *a, то &a это адрес самого указателя, а a адрес значения на которое ссылается указатель?
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
08.01.2018, 01:18
jonikster, да, именно так
0
 Аватар для Herji
299 / 208 / 174
Регистрация: 11.05.2016
Сообщений: 655
08.01.2018, 01:46
Цитата Сообщение от jonikster Посмотреть сообщение
Herji, увы, по C++ нет простых книг. Моя книга - интернет!
Интернет тут - худшая книга.
Взять книжки самого(!) Страуструпа - сложные, но на первый взгляд. И сам же он об этом и упоминает и разжевывает.
Практика нужна - тогда и книжка понятной станет.
Вот это вот, которое "C++ за 21 день" - что в ряду с "Японский за 21 день" - это только в картинке, где человек изобретает машину времени и таки изучает с+++ на 21й день.
Видеоуроки - туда же.
Практика и только практика.

Когда я еще не понимал указатели - я читал всякое про них и тупо эксперементировал с ними, когда, что и где.
Программа - тем более что простейшая - не атомная бомба, даже компутер свой поломать очень сложно будет через среду разработки;
Эксперименты - наше всё в обучении
0
Велосипедист...
 Аватар для Mournful Max
353 / 220 / 73
Регистрация: 15.12.2015
Сообщений: 785
08.01.2018, 05:24
Цитата Сообщение от jonikster Посмотреть сообщение
C++
1
int a = new int(6);
1. Не скомпилируется без явного приведения типа к int ( в данном случае ).
2. Undefined behavior на 64-бит архитектуре, если выполнить приведение.
3. Является implementation-defined behavior, потому что адреса не всегда могут быть представлены с помощью целых.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.01.2018, 05:24
Помогаю со студенческими работами здесь

Использование указателя this
Есть класс пользователя в к нему нужно реализовать: 1) setEmail(char* email): void - изменение электронной почты с проверкой на...

Использование указателя this
Вообщем решил я задачу: файл 1: // stack.h -- class definition for the stack ADT #ifndef STACK_H_ #define STACK_H_ #include...

Использование указателя this
Здравствуйте. Помогите пожалуйста сделать такое приложение на С++: Создать класс массив, состоящий из 10 действительных чисел....

Использование указателя this
Доброго времени суток Ошибка при первом использовании указателя this, не в ходе компиляции, а как только заходит на это строчку в след...

Правильное использование указателя
В программе пишутся данные с UDP, программа намного больше описанного здесь, просто меня интересует только конкретно задаваемый мной...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru