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

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

Войти
Регистрация
Восстановить пароль
 
Japanese
 Аватар для Japanese
9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 123
#1

Бесконечные адреса одной переменной. МоСК кипит... - C++

13.12.2010, 13:54. Просмотров 360. Ответов 7
Метки нет (Все метки)

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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
 
 
int main()
{
    int * pAddressOne;
    int * pAddressTwo;
    int * pAddressThree;
    int * pAddressFour;
    int * pAddressFive;
    int Value = 7;
 
    cout << "Value: \t\t" << Value << endl;         // Выводим на экран значение переменной Value - 7
    cout << "Value: \t\t" << &Value << endl;        // Выводим на экран адрес по которому лежит значение переменной Value 
    
    pAddressOne = &Value;                   // Присваиваем адрес переменной Value указателю №1
    cout << "pAddressOne: \t" << pAddressOne << endl;       
 
    pAddressTwo = pAddressOne;              // Присваиваем значение указателя №1 указателю №2
    cout << "pAddressTwo: \t" << &pAddressTwo << endl;
 
    pAddressThree = pAddressTwo;                // Присваиваем значение указателя №2 указателю №3
    cout << "pAddressThree: \t" << &pAddressThree << endl;
 
    pAddressFour = pAddressThree;               // Присваиваем значение указателя №3 указателю №4
    cout << "pAddressFour: \t" << &pAddressFour << endl;
 
    pAddressFive = pAddressFour;                // Присваиваем значение указателя №4 указателю №5
    cout << "pAddressFive: \t" << &pAddressFive << endl;
 
    cout << "*pAddressFive: \t" << *pAddressFive << endl;   // Выводим на экран значение хранащееся
                                // по адресу который был присвоен указателю №5
    
    getch();
    return 0;
}
Результат выполнения данной программы:

Value: 7
Value: 003DF7D8
pAddressOne: 003DF7D8
pAddressTwo: 003DF808
pAddressThree: 003DF7FC
pAddressFour: 003DF7F0
pAddressFive: 003DF7E4
*pAddressFive: 7

Вопрос:
Выводить адреса в которых все время будет содержаться значение 7 можно бесконечно?
Каждый адрес имеет свой собственный адрес? Если так, то получается что наша переменная (Value) имеет бесконечность второстепенных адресов? Но это какбэ невозможно, памяти нехватило бы никакой
Объясните пожалуйста что тут к чему
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2010, 13:54     Бесконечные адреса одной переменной. МоСК кипит...
Посмотрите здесь:

Класс многочленов от одной переменной C++
C++ Текст и числа в одной переменной
Использование одной переменной C++
C++ Передача значения переменной из одной формы в другую
C++ Многочлен от одной переменной
C++ Взятие адреса у константной переменной при объявлении
C++ Обязательно ли объявлять переменную для хранения адреса переменной как указатель?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2915 / 1344 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.12.2010, 14:02     Бесконечные адреса одной переменной. МоСК кипит... #2
Еперный театр, вы выводите адреса переменных-указателей. Получаете адрес переменной, в которой хранится адрес. Вот они у вас и разные.
Japanese
 Аватар для Japanese
9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 123
13.12.2010, 14:10  [ТС]     Бесконечные адреса одной переменной. МоСК кипит... #3
Цитата Сообщение от lemegeton Посмотреть сообщение
Еперный театр, вы выводите адреса переменных-указателей. Получаете адрес переменной, в которой хранится адрес. Вот они у вас и разные.
Значит каждый адрес имеет свой собственный адрес?
lemegeton
 Аватар для lemegeton
2915 / 1344 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
13.12.2010, 14:20     Бесконечные адреса одной переменной. МоСК кипит... #4
Каждая переменная имеет собственный адрес. Даже та, которая хранит адреса (указатель).
C++
1
2
3
4
5
6
7
int value = 7;// переменная
int* pointer; // как ни странно, тоже переменная, со своим адресом в памяти
 
pointer = &value; // в переменной pointer находится адрес переменной value
 
cout << pointer;  // содержимое переменной pointer, т.е. адрес переменной value
cout << &pointer // адрес переменной pointer.
Понятней стало?
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
13.12.2010, 14:24     Бесконечные адреса одной переменной. МоСК кипит... #5
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
int main()
{
        int val = 7;
 
        int *ptr1 = &val;
        int *ptr2 = ptr1;
 
        printf("address of var: %p\n", &val);
        printf("value of ptr1: %p\n", ptr1);
        printf("address of ptr1: %p\n", &ptr1);
        printf("value of ptr2: %p\n", ptr2);
        printf("adress of ptr2: %p\n", &ptr2);
 
        return 0;
}
RUSya82
 Аватар для RUSya82
236 / 114 / 3
Регистрация: 15.10.2010
Сообщений: 395
13.12.2010, 14:24     Бесконечные адреса одной переменной. МоСК кипит... #6
Цитата Сообщение от Japanese Посмотреть сообщение
Значит каждый адрес имеет свой собственный адрес?
Нет, это значит, что переменная указатель имеет свой собственный адрес
Japanese
 Аватар для Japanese
9 / 9 / 1
Регистрация: 14.11.2010
Сообщений: 123
13.12.2010, 14:28  [ТС]     Бесконечные адреса одной переменной. МоСК кипит... #7
все понял всем спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2010, 14:32     Бесконечные адреса одной переменной. МоСК кипит...
Еще ссылки по теме:

C++ Поиск одной переменной под другой
C++ Находятся ли ip-адреса в одной сети
Соответствие одной переменной другой C++
C++ Вывод адреса переменной типа char
C++ Передача переменной из одной функции в другую

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

Или воспользуйтесь поиском по форуму:
RUSya82
13.12.2010, 14:32     Бесконечные адреса одной переменной. МоСК кипит...
  #8

Не по теме:

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

Yandex
Объявления
13.12.2010, 14:32     Бесконечные адреса одной переменной. МоСК кипит...
Ответ Создать тему
Опции темы

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