Форум программистов, компьютерный форум 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)) и определить, какой из них имеет большую площадь. подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1283 / 1217 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
31.05.2012, 15:47     Понимание адреса, ссылки и указателя
Цитата Сообщение от The_Immortal Посмотреть сообщение
Да вот это по-моему бред
Ты абсолютно прав. Вариант, когда ты был бы не прав, я чуть выше нарисовал, это когда int **p;
Поэтому шняжные книжки лучше не читать.)

Цитата Сообщение от The_Immortal Посмотреть сообщение
У меня просто в голове не укладывается, как две переменные могут сидеть по одному адресу... Или это чисто логический прием?
Щяс разжую.

есть код
C++
1
2
3
int v = 5; // адрес, допустим 0x0022ff08
int * p = &v; // адрес, допустим 0x0022ff04
int & r = v; // ВНИМАНИЕ , адрес r РАВЕН адресу v, т.е. 0x0022ff08
Т.е. в коде между использованием v и r нет никакой разницы, это одно и то же. Это не две переменные, расположенные по одному адресу, а одна и та же переменная. Ты сразу спросишь, зачем это нужно и я не менее сразу же отвечу кодом

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
struct A
{
    int v;
};
 
A a;
int & r = a.v;
// Теперь вместо a.v = 10 можно написать r = 10
 
 
void Func( int & r )
{
    r = r * r;
}
 
int b = 10;
Func(b);
 int c= b; // c = 100

По указателям.
р расположен по адресу 0x0022ff04 и по этому адресу записан адрес переменной v 0x0022ff08.

Добавлено через 1 минуту
Цитата Сообщение от alkagolik Посмотреть сообщение
В данном случае p хранит адрес px
Только нужно сделать оговорку, что это действительно только для 32 битной системы и, что компилятор будет страшно ругаться.
 
Текущее время: 09:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru