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

Понимание адреса, ссылки и указателя - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Теория про new http://www.cyberforum.ru/cpp-beginners/thread591164.html
Помогите пожалуйста понять как работает new. При перегрузке требуется, чтобы у функции был параметр size_t, причем нельзя присваивать ему default значение. Объясните, что является таким параметром в данном вызове: int* a = new int; Или это тоже самое, что и int* a = new int; И как тогда выглядит вызов такой перегруженной функци: void* operator new(const size_t& size, const int& obj);
C++ Компилятор ругается на static переменные Есть класс: class Node{ public: Node(void) : data(0), next(0), prev(0), first(0), last(0), size(0){} Node(const _My& Val){ data = new _My(Val); size++; } ~Node(void){} _My* data; http://www.cyberforum.ru/cpp-beginners/thread591160.html
Определить, какой элемент двумерного динамического массива больше: расположен в левом верхнем или в верхнем правом углу C++
Определить а) какой элемент двумерного массива больше: расположен в левом верхнем или в верхнем правом углу; б) какой элемент двумерного массива меньше: расположенный в нижнем правом или в верхнем левом углу.
C++ Сортировка Хоара
помогите правильно вставить счетчик шагов. Насколько я понял, функция сама себя перезапускает, тоесть надо в тело функции кидать, но так получается 100+ шагов, многовато ... #include <iostream> #include <conio.h> using namespace std; int mass; int i,j,N,ns=0; int quickSortR(int* mass, int N) { i = 0, j = N; int temp, p; ns++;
C++ Удалить из стека последний элемент http://www.cyberforum.ru/cpp-beginners/thread591144.html
Информационное поле стека числовое. Удалить из стека последний елемент. Добавлено через 48 минут Вот есть стек, но он меняет местами. #include<iostream> #include<conio.h> using namespace std; struct node {
C++ Два треугольника заданы координатами своих вершин. Вычислить их площади Два треугольника заданы координатами своих вершин. Вычислить их площади по формуле S=1/2((Х2-Х1)(Y3-Y1)-(X3-X1)(Y2-Y1)) и определить, какой из них имеет большую площадь. подробнее

Показать сообщение отдельно
The_Immortal
1548 / 484 / 8
Регистрация: 04.04.2009
Сообщений: 1,891
31.05.2012, 17:39  [ТС]     Понимание адреса, ссылки и указателя
Сейчас пытаюсь разобрать пример от alkagolik:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main() {
 
    int *p, x, y;
    int &s = x;
    p = &x;
 
    *p = 3; // *p - разыменовывание указателя
    cout << *p << ' ' << s << ' ' << x << endl;
    s = 4;
    cout << *p << ' ' << s << ' ' << x << endl;
    p = &y;
    s = y; // y не проинициализирована, теперь x = y т.к. s всегда указывает на x  и только
    *p = 5;
    cout << *p << ' ' << s << ' ' << y << x <<  endl; // вот тут застрял.
    //если честно, то ожидал увидеть: "5 5 5 5", а увидел "5 2293672 5 2293672 "
    s = y;
    cout << *p << ' ' << s << ' ' << y << x <<  endl;
 
    return 0;
}
Так вот, не могу понять почему:
//если честно, то ожидал увидеть: "5 5 5 5", а увидел "5 2293672 5 2293672 "


y не проинициализирована
Согласен. На тот момент да. Но после этого:
C++
1
*p = 5;
инициализация произошла и y=5, разве нет? Соответственно s (как и x) тоже должны быть равны значению y, а не ее адресу... А получилось не так

И только после повторного присвоения
C++
1
    s = y;
Все стало нормально...

Вот этого не понимаю

Добавлено через 9 минут
Соответственно s (как и x) тоже должны быть равны значению y, а не ее адресу...
Ммм... Адрес переменной y тут не причем. Ступил здесь. Просто какое-то рандомное значение выделенное при присвоении.
 
Текущее время: 06:25. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru