|
|
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
int &i; что можно делат с такой переменной? что она вообще из себя представляет? можно ли ей присвоить значение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 13:28 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Вообще-то должен быть как минимум warning. Сделпть с таким уже нничего нельзя. инициализировать надо было при декларации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 13:39 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Это не переменная :). Это ссылка на переменную. Почти, то же самое, что int *i, но имеющее вагон и маленькую тележку отличий в использовании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:11 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
действительно, поспешил, так не работает, пока получилось так: int &i = *(int *)2; printf("\ni = %u", &i); можете сказать что за отличия от int * ? но это конечно излишний изврать, а бывают ли для нее достойные применения? это не тоже самое, при передачу параметра в функцию по ссылке? если тоже самое, то почему в теле функции я использую ее как обычную переменную, а так приходится добавлять & ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:21 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik пишет: > int &i; Должно быть int &i = xxx; Инициализация ссылки обязательна. что можно делат с такой переменной? Все то же, что и с int xxx; что она вообще из себя представляет? Разименованный указатель на xxx. Гарантированно указывающий на какое-то значение. можно ли ей присвоить значение? Да Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:30 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
blinded пишет: > Вообще-то должен быть как минимум warning. Сделпть с таким уже нничего error. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:31 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik а так приходится добавлять & А зачем приходится? То, что вы написали: int &i = *(int *)2; ужос :-) Вы берете адрес от i, и в него кладете Взятие адреса нужно при передачи параметра по ссылке, или для взятия адреса :-) Масо масляное на первый взгляд. Этим вы говорите, что значение переменной i находится начиная 0x2. Зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:31 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
tAZAR Tubrik а так приходится добавлять & А зачем приходится? То, что вы написали: int &i = *(int *)2; ужос :-) Вы берете адрес от i, и в него кладете Взятие адреса нужно при передачи параметра по ссылке, или для взятия адреса :-) Масо масляное на первый взгляд. Этим вы говорите, что значение переменной i находится начиная 0x2. Зачем? покажите как правильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:35 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrikдействительно, поспешил, так не работает, пока получилось так: int &i = *(int *)2; Мля-я-я Это сильно. Ну и какойже int у нас по адресу 2 printf("\ni = %u", &i); Tubrik можете сказать что за отличия от int * ? но это конечно излишний изврать, а бывают ли для нее достойные применения? это не тоже самое, при передачу параметра в функцию по ссылке? если тоже самое, то почему в теле функции я использую ее как обычную переменную, а так приходится добавлять & 1) не надо звездочку писать чтобы к int обратитсься 2) присвоить ссылке новое значение НЕЛЬЗЯ!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:37 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrikдействительно, поспешил, так не работает, пока получилось так: int &i = *(int *)2; printf("\ni = %u", &i); можете сказать что за отличия от int * ? но это конечно излишний изврать, а бывают ли для нее достойные применения? это не тоже самое, при передачу параметра в функцию по ссылке? если тоже самое, то почему в теле функции я использую ее как обычную переменную, а так приходится добавлять & Гениальный код. И какой в этом смысл? ссылка на объект предназначена для того чтобы, хранить адрес объекта, и при обращении к нему, обращаться к настоящему объекту. Т.е. по сути, обычный указатель. Но я нигде не встречал внятного описания, что такое ссылка. Потому, что описать, наверное, очень сложно. Ссылка иммитирует обращение к обычному классу, т.е. вы не пишете -> для доступа к методу, а пишете ".". Так же не надо разыменовывать ее, для получения доступа к значению. Но ссылку всегда необходимо инициализировать, как отметил blinded, она не может принимать значения NULL. Хотя, компилятор и скажет вам Варнинг, но мы не сможем потом узнать, инициализированна она или нет. Ну, еще у нее куча особенностей, допустим передача значений по ссылке, параметры "Type const&", и т.д. Почему в теле функции вы ее используете обычным образом, уже думаю, понятно. Ну, а в парметрах пишете & для того, чтобы компилятор не создовал копию передаваемого значения в стеке, а передал значение "по ссылке". Т.е. фактически, указатель, если не сможет оптимизировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:39 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh Гениальный код. И какой в этом смысл? никакого, я просто пытался как-нибудь скомпилить и так получилось) я так и не понял как присвоить какое-нидь значение, т.е. проинициализировать скажем числом 5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:48 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
int i = 5; ??? Или вы хотите сослаться на определенный адрес в памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 14:57 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik Akh Гениальный код. И какой в этом смысл? никакого, я просто пытался как-нибудь скомпилить и так получилось) я так и не понял как присвоить какое-нидь значение, т.е. проинициализировать скажем числом 5 Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:02 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Ну, и ссылка, есно, константная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:02 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
никакой конкретной задачи, просто стало интересно узнать, можно ли переменной объявленной как int &i = ... присвоить значение, например целого числа, если да, то как это сделать? я где-то видел такое, но забыл. еще интересно, есть ли полезное использование таких объявлений, помимо изврата? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:03 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrikникакой конкретной задачи, просто стало интересно узнать, можно ли переменной объявленной как int &i = ... присвоить значение, например целого числа, если да, то как это сделать? я где-то видел такое, но забыл. еще интересно, есть ли полезное использование таких объявлений, помимо изврата? Скорее что-то перепутал. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Если в функции не использовать передачи по ссылке, то в стек будет забубенено много-много килобайт или мегобайт. Код: plaintext 1. 2. 3. Если использовать ссылку, то по возвращению из функции ваши данные изменяться Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:10 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrikпомимо изврата? В красной книге, возможно, есть такие экземпляры :-) Тут дело в том, что вы пытаетесь сказать, что &i = 2 - это адрес переменной i в памяти = 2. Кто вам даст потом безнаказанно писать в память, которую вы не выделяли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:12 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh Код: plaintext 1. 2. 3. 4. i:\test2007\hui2\hui2.cpp(94): error C2440: 'initializing' : cannot convert from 'const int' to 'int &' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:13 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Или вот такой короткий пример использования &: #include <QApplication> #include <QFont> #include "ui_hello.h" using namespace Ui; QDialog *widg; int Run(QApplication *app); int main(int argc, char* argv[]) { QApplication app(argc, argv); int res = Run(&app); delete widg; return res; } int Run(QApplication *app) { widg = new QDialog(); Dialog dlg; dlg.setupUi(widg); widg->showFullScreen(); return app->exec(); } [SRC c++][/SRC] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:14 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik Akh Код: plaintext 1. 2. 3. 4. i:\test2007\hui2\hui2.cpp(94): error C2440: 'initializing' : cannot convert from 'const int' to 'int &' Я же сразу исправился. Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:16 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
tAZARИли вот такой короткий пример использования &: #include <QApplication> #include <QFont> #include "ui_hello.h" using namespace Ui; QDialog *widg; int Run(QApplication *app); int main(int argc, char* argv[]) { QApplication app(argc, argv); int res = Run(&app); delete widg; return res; } int Run(QApplication *app) { widg = new QDialog(); Dialog dlg; dlg.setupUi(widg); widg->showFullScreen(); return app->exec(); } [SRC c++][/SRC] кажется это не совсем то, вы возможно хотели привести пример типа int Run(QApplication &app), а так получается взятие адреса.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:16 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
tAZARИли вот такой короткий пример использования &: И где тут ссылки на объекты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:18 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik кажется это не совсем то, вы возможно хотели привести пример типа int Run(QApplication &app), а так получается взятие адреса.. Да, простите, ошибся :-) Но для сведения тоже пойдет:-) Вот то, о чем говорили: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:18 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh Tubrik Akh Код: plaintext 1. 2. 3. 4. i:\test2007\hui2\hui2.cpp(94): error C2440: 'initializing' : cannot convert from 'const int' to 'int &' Я же сразу исправился. Код: plaintext 1. 2. 3. я пока печатал не видел нового поста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:18 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
разницы же нету const int i5 = 5; или int const i5 = 5; ?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:21 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. так тоже работает.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:26 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrikразницы же нету const int i5 = 5; или int const i5 = 5; ?? одно и тоже ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:32 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik Код: plaintext 1. так тоже работает.. есстественно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:33 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh Tubrik Код: plaintext 1. так тоже работает.. есстественно. const int &i = 5; и так тоже) всем спасибо, теперь я спокоен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 15:34 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik wrote: > int &i что можно делат с такой переменной? то, же, что и с int > что она вообще из себя представляет? адрес оригинальной переменной. > можно ли ей присвоить значение? значение присвоить можно, но заставить указывать на новую переменную - нельзя. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:48 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik wrote: > int &i = *(int *)2; accessViolation будет. Вы берете ссылку на переменную, которая якобы находится по адресу 0x00000002. > бывают ли для нее достойные применения? int a = 3; int& b = a; Плюсы по сравнению с указателем в том, что требует инициализации и не может указывать на 0 (если не изваращаться :)). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:50 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
ErV > int &i = *(int *)2; accessViolation будет. Вы берете ссылку на переменную, которая якобы находится по адресу 0x00000002. gcc 3.3.3 номально пропускает. Одно из 2-х: 1) либо он оптимизирует без реального разыменования. 2) либо приводит к int i. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:53 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
tAZAR wrote: > Кто вам даст потом безнаказанно писать в память, которую вы не выделяли? В MS-DOS программе реального времени, по идее, такое можно. (но вот только не факт, что в адрес 0x00000002). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:54 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > gcc 3.3.3 номально пропускает. Одно из 2-х: А если туда писать попробовать? :) Компилиться-то такое должно... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:58 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
ErV tAZAR wrote: > Кто вам даст потом безнаказанно писать в память, которую вы не выделяли? В MS-DOS программе реального времени, по идее, такое можно. (но вот только не факт, что в адрес 0x00000002). Posted via ActualForum NNTP Server 1.4 Там, вроде таблица прерываний. В таблицу писать разрешает, насколько я помню. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 17:58 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
ErV Akh wrote: > gcc 3.3.3 номально пропускает. Одно из 2-х: А если туда писать попробовать? :) Компилиться-то такое должно... Posted via ActualForum NNTP Server 1.4 Скомпилится. Дело в другом. accessViolation не будет при чтении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:00 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh ErV > int &i = *(int *)2; accessViolation будет. Вы берете ссылку на переменную, которая якобы находится по адресу 0x00000002. gcc 3.3.3 номально пропускает. Одно из 2-х: 1) либо он оптимизирует без реального разыменования. 2) либо приводит к int i. И не удивительно, адрес допустимый и читать его можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:07 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
blinded Akh ErV > int &i = *(int *)2; accessViolation будет. Вы берете ссылку на переменную, которая якобы находится по адресу 0x00000002. gcc 3.3.3 номально пропускает. Одно из 2-х: 1) либо он оптимизирует без реального разыменования. 2) либо приводит к int i. И не удивительно, адрес допустимый и читать его можно Вообще, я даже не уверен, что он с него что-то читает. Бедь, если не удается получить смещение при инициализации ссылки, то он будет хранить указатель. Т.е. int &i будет указателем на 0x000002. Потом он и выводиться. Берется адресс ссылки, и мы видим 2-ку. Разыменовывать адрес, чтобы потом получить указатель разыменованных данных бессмысленно. Компилятор это оптимизирует, и акссес виолейшен обходиться стороной. :) Такая вот мысля. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 18:17 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Akh wrote: > Бедь, если не удается получить смещение при инициализации ссылки, то он > будет хранить указатель. Т.е. int &i будет указателем на 0x000002. Потом > он и выводиться. Берется адресс ссылки, и мы видим 2-ку. Не должно быть такого. Там 2 кастится в указатель на int. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:04 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
ErV Akh wrote: > Бедь, если не удается получить смещение при инициализации ссылки, то он > будет хранить указатель. Т.е. int &i будет указателем на 0x000002. Потом > он и выводиться. Берется адресс ссылки, и мы видим 2-ку. Не должно быть такого. Там 2 кастится в указатель на int. Posted via ActualForum NNTP Server 1.4 Это-то да, вот только выводится &i ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:22 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
blinded wrote: > Это-то да, вот только выводится &i Гм. А если по адресу лежит 2? :) Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2007, 19:42 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
ErV blinded wrote: > Это-то да, вот только выводится &i Гм. А если по адресу лежит 2? :) Не все ли равно что там лежит? Обращения к значению не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2007, 09:58 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
еще один вопросик :) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. как так получается? b вроде становится псевдонимом переменной a, которая разрушается при выходи и fucn() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 18:27 |
|
||
|
int &i; что можно делат с такой переменной?
|
|||
|---|---|---|---|
|
#18+
Tubrik wrote: > еще один вопросик :) > > int &func() > { > int a = 5; > return a; > }// Нельзя так делать. int a создается на стеке, и при выходе из функции её значение с очень большой вероятностью будет затерто каким-нибудь мусором (так как указатель стека изменяется). При попытке записи в этот результат будут порушены данные, либо будет AccessViolation (или SegmentationFault :)). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.08.2007, 18:59 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2028360]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 475ms |

| 0 / 0 |
