Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 24.02.2015
Сообщений: 18

Изменить адрес указателя

23.05.2015, 10:50. Показов 7311. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста, как изменить не только адрес куда указывает указатель, но и адрес самого указателя
Для примера:
C++
1
2
3
4
5
char *a="one";
char *b="two";
 
a=b; // ок
&a=&b; // lvalue required as left operand of assignment
Я так понимаю lvalue это значение на которое можно получить ссылку, в чем тогда тут проблема? Объясните плиз
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.05.2015, 10:50
Ответы с готовыми решениями:

Изменить адрес указателя на функцию
void ShowNumber(int number) { printf("number = %d\n", number); } void (*gFuncPointer)(int) = (void(*)(int)) (((int*)ShowNumber)...

Адрес объекта, адрес указателя. Где что находится?
#include <iostream> void Foo(int* val) { std::cout << val << " " << *val << " " << &val << '\n'; } void Bar(int* &val) ...

Адрес указателя
Здравствуйте! Зачем нужен адрес указателя? Например, в данной функции реализации разбиения декартова дерева: void split (pitem...

12
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.05.2015, 10:53
почитайте об lvalue ? По простому, lvalue - это типы значений, которые могут стоять слева от знака равно. Как адресс (32-и битное значение(в вин32)) может стоять слева??? Число 15 тоже 32-ух битное значение. Вы же не пишите 5 = 11. Так почему тут пытаетесь?????
0
1 / 1 / 0
Регистрация: 24.02.2015
Сообщений: 18
23.05.2015, 11:00  [ТС]
Дак а как изменить адрес указателя?
0
55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
23.05.2015, 11:09
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
 
int main()
{
setlocale(LC_ALL,"Rus");
int a=3,b=6;
int *c=&a;
cout<<"Адрес указателя с:"<<c<<endl;
c=&b;
cout<<"Адрес указателя с:"<<c<<endl;
    system("pause"); 
    return 0;
}
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.05.2015, 11:10
Цитата Сообщение от Disabled7 Посмотреть сообщение
Дак а как изменить адрес указателя?
никак
0
55 / 56 / 34
Регистрация: 29.12.2012
Сообщений: 478
23.05.2015, 11:10
Согласен с rikimaru2013, читать вам и читать
0
1 / 1 / 0
Регистрация: 24.02.2015
Сообщений: 18
23.05.2015, 11:14  [ТС]
Прочитаю, но сначала бы хотел разобраться с указателями. Вроде же можно было сделать два указателя полностью идентичные, разве нет?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.05.2015, 11:16
Лучший ответ Сообщение было отмечено Disabled7 как решение

Решение

Объясню почему нельзя:
указатель - это переменная, которая хранит адресс. Переменная - это участок в памяти обладающий значением. Представьте себе улицу и куча домов. У дома есть адресс. Создали новый дом - дали ему адресс. И тут вы такой приходите, волосы назад, я хочу чтобы у этого красного дома был адресс не Березная 15, а Толчево 32. Как?!??! Если снести дом по старому адрессу и построить по новому, то это уже новый дом будет, хоть он и будет полной копией старого(конструктор копирование).

Указатель может ссылаться на много разных адресс на протяжение своей жизни, но его адресс с момента его создания до момента смерти(самого указателя) будет одним и только одним.
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.05.2015, 11:18
Цитата Сообщение от Jewbacabra Посмотреть сообщение
никак
что-то я погарячился
C++
1
2
3
4
5
6
7
8
9
10
int a = 5;
    int b = 6;
    int* pa = &a;
    int* pb = &b;
    int** pp = new int*;
    *pp = pa
    cout << *pp << endl;
    *pp = pb;
    cout << *pp << endl;
    delete pp;
1
1 / 1 / 0
Регистрация: 24.02.2015
Сообщений: 18
23.05.2015, 11:18  [ТС]
Понял, спасибо
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.05.2015, 11:26
C++
1
2
3
4
5
6
7
8
9
10
int a = 5;
    int b = 6;
    int* pa = &a;
    int* pb = &b;
    int** pp = new int*;
    *pp = pa
    cout << *pp << endl;
    *pp = pb;
    cout << *pp << endl;
    delete pp;
1) указатель типа int** ссылается(имеет значение), то на однин указатель(0x00000002), то на другой (0x00000003), но сам указатель о котором спрашивает ТС то всеравно будет (0x00000007) на протяжение всей своей жизни(он в стеке, кто не понял)
2) код с UB

P.S. я не хотел комментировать данный код, но новичку показывать такой код нельзя - он не поймёт почему UB даже тут, и будет его юзать
0
Эксперт PHP
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
23.05.2015, 11:36
rikimaru2013, а в чем UB?
1
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.05.2015, 11:46
Мои глаза хотели спать) Увидел
C++
1
delete *pp;
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.05.2015, 11:46
Помогаю со студенческими работами здесь

Узнать адрес указателя
Есть функция в чужой программе, которая в качестве параметров принимает указатель на структуру. Вопрос, как узнать адрес этой структуры,...

Сменить адрес указателя
Подскажите пожалуйста, допустим есть 2 массива A и B с 2-я указателями на них a и b. могу ли я сменить адрес указателя а на массив B, после...

Сменить адрес указателя
У меня есть переменная v. Как сделать так, что бы в некоторый момент времени она равнялась какому-то &quot;своему&quot; значению, а в...

Получить адрес указателя на функцию
int(*ptr)(int) = &amp;abs; cout &lt;&lt; &quot;&amp;abs = &quot; &lt;&lt; &amp;ptr &lt;&lt; endl; cout &lt;&lt; &quot;&amp;ptr = &quot; &lt;&lt; endl; Собственно, вопрос в заголовке. Хотя я...

У указателя самопроизвольно меняется адрес
Заметил такую странную вещь: #include &lt;iostream&gt; using namespace std; int main() { int *p; p = new int(10); ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru