powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / int &i; что можно делат с такой переменной?
20 сообщений из 45, страница 2 из 2
int &i; что можно делат с такой переменной?
    #34673757
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
int i5 =  5 ;
const int &i = i5;

так тоже работает..
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34673782
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrikразницы же нету
const int i5 = 5;
или
int const i5 = 5;

??

одно и тоже
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34673784
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik
Код: plaintext
1.
int i5 =  5 ;
const int &i = i5;

так тоже работает..

есстественно.
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34673790
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh Tubrik
Код: plaintext
1.
int i5 =  5 ;
const int &i = i5;

так тоже работает..

есстественно.

const int &i = 5;

и так тоже) всем спасибо, теперь я спокоен
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674282
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik wrote:

> int &i что можно делат с такой переменной?
то, же, что и с int

> что она вообще из себя представляет?
адрес оригинальной переменной.

> можно ли ей присвоить значение?
значение присвоить можно, но заставить указывать на новую переменную -
нельзя.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674288
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik wrote:

> int &i = *(int *)2;
accessViolation будет. Вы берете ссылку на переменную, которая якобы
находится по адресу 0x00000002.

> бывают ли для нее достойные применения?
int a = 3;
int& b = a;
Плюсы по сравнению с указателем в том, что требует инициализации и не может
указывать на 0 (если не изваращаться :)).

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674295
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
> int &i = *(int *)2;
accessViolation будет. Вы берете ссылку на переменную, которая якобы
находится по адресу 0x00000002.


gcc 3.3.3 номально пропускает. Одно из 2-х:
1) либо он оптимизирует без реального разыменования.
2) либо приводит к int i.
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674299
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tAZAR wrote:

> Кто вам даст потом безнаказанно писать в память, которую вы не выделяли?
В MS-DOS программе реального времени, по идее, такое можно. (но вот только
не факт, что в адрес 0x00000002).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674317
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh wrote:

> gcc 3.3.3 номально пропускает. Одно из 2-х:
А если туда писать попробовать? :)
Компилиться-то такое должно...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674319
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
tAZAR wrote:

> Кто вам даст потом безнаказанно писать в память, которую вы не выделяли?
В MS-DOS программе реального времени, по идее, такое можно. (но вот только
не факт, что в адрес 0x00000002).
Posted via ActualForum NNTP Server 1.4

Там, вроде таблица прерываний. В таблицу писать разрешает, насколько я помню.
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674323
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Akh wrote:

> gcc 3.3.3 номально пропускает. Одно из 2-х:
А если туда писать попробовать? :)
Компилиться-то такое должно...
Posted via ActualForum NNTP Server 1.4

Скомпилится.

Дело в другом. accessViolation не будет при чтении.
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674354
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh ErV
> int &i = *(int *)2;
accessViolation будет. Вы берете ссылку на переменную, которая якобы
находится по адресу 0x00000002.


gcc 3.3.3 номально пропускает. Одно из 2-х:
1) либо он оптимизирует без реального разыменования.
2) либо приводит к int i.
И не удивительно, адрес допустимый и читать его можно
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674373
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded Akh ErV
> int &i = *(int *)2;
accessViolation будет. Вы берете ссылку на переменную, которая якобы
находится по адресу 0x00000002.


gcc 3.3.3 номально пропускает. Одно из 2-х:
1) либо он оптимизирует без реального разыменования.
2) либо приводит к int i.
И не удивительно, адрес допустимый и читать его можно

Вообще, я даже не уверен, что он с него что-то читает.

Бедь, если не удается получить смещение при инициализации ссылки, то он будет хранить указатель. Т.е. int &i будет указателем на 0x000002. Потом он и выводиться. Берется адресс ссылки, и мы видим 2-ку.

Разыменовывать адрес, чтобы потом получить указатель разыменованных данных бессмысленно. Компилятор это оптимизирует, и акссес виолейшен обходиться стороной.

:) Такая вот мысля.
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674481
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh wrote:

> Бедь, если не удается получить смещение при инициализации ссылки, то он
> будет хранить указатель. Т.е. int &i будет указателем на 0x000002. Потом
> он и выводиться. Берется адресс ссылки, и мы видим 2-ку.
Не должно быть такого. Там 2 кастится в указатель на int.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674500
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
Akh wrote:

> Бедь, если не удается получить смещение при инициализации ссылки, то он
> будет хранить указатель. Т.е. int &i будет указателем на 0x000002. Потом
> он и выводиться. Берется адресс ссылки, и мы видим 2-ку.
Не должно быть такого. Там 2 кастится в указатель на int.
Posted via ActualForum NNTP Server 1.4
Это-то да, вот только выводится &i
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34674527
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded wrote:

> Это-то да, вот только выводится &i
Гм. А если по адресу лежит 2? :)
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34676296
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
blinded wrote:

> Это-то да, вот только выводится &i
Гм. А если по адресу лежит 2? :)

Не все ли равно что там лежит? Обращения к значению не было.
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34730553
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
еще один вопросик :)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
int &func()
{
	int a =  5 ;
	return a;
}//

int main(int argc, char* argv[])
{
	int &b = func();

	printf("\n&b = [%d]", b);
	printf("\n\n");

	b =  3 ;
	
	printf("\n&b = [%d]", b);
	printf("\n\n");

	return  0 ;
}

как так получается?
b вроде становится псевдонимом переменной a, которая разрушается при выходи и fucn()
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34730641
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik wrote:

> еще один вопросик :)
>
> int &func()
> {
> int a = 5;
> return a;
> }//
Нельзя так делать.
int a создается на стеке, и при выходе из функции её значение с очень
большой вероятностью будет затерто каким-нибудь мусором (так как указатель
стека изменяется). При попытке записи в этот результат будут порушены
данные, либо будет AccessViolation (или SegmentationFault :)).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
int &i; что можно делат с такой переменной?
    #34730650
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял
...
Рейтинг: 0 / 0
20 сообщений из 45, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / int &i; что можно делат с такой переменной?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]