|
|
|
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 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34673609&tid=2028360]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
174ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 194ms |
| total: | 458ms |

| 0 / 0 |
