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

Передача по ссылке - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка операторов ввода вывода http://www.cyberforum.ru/cpp-beginners/thread631269.html
ребята болит уже голова)) main.cpp #include "myStr.h" int main() { myStr myS("ok"); cout<<myS<<endl;//надо чтоб заработало char x; cin>>x; return 0;
C++ std::map нефикс. размер? Нубо-вопрос, std::map и std::array имеют фиксированный размер, как и обычные массивы? http://www.cyberforum.ru/cpp-beginners/thread631265.html
int / INT etc C++
Вопрос легок, в чем разница между обычным int и Виндовским INT / etc? Попрошу подробного ответа :)
Почему антивирус считает эту программу вирусом? C++
Компилирую и антивирус ее удаляет в карантин. Что это такое?:( #include <iostream> #include <windows.h> using namespace std; int main() { int a; int b;
C++ Дано x,y,z Вычеслить a,b, если: http://www.cyberforum.ru/cpp-beginners/thread631215.html
a=(3+e^(y-1))/(1+x^2 |y-tg(z)| ) b=1+(y-x)+〖(y-x)〗^2/2+(y-x)^3/3
C++ Трактри́са (линия влечения) у кого-то есть реализация этой функции или же знаете библиотеку в которой есть такая реализация? подробнее

Показать сообщение отдельно
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
31.07.2012, 18:39     Передача по ссылке
В учебнике написано, что можно использовать функцию с левой стороны операции присваивания, если она возвращает ссылку. Например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int &swap(int &x){
    x++;         //инкремент переменной на которую ссылается x
    
    return x;    //возврат ссылки
}
 
int main(){
    int x = 100;
    
    cout << swap(x) << "\n";
    
    swap(x) = 2; //теперь x = 2;
    cout << x << "\n";
 
    return 0;
}
Я попробовал сделать передачу по ссылке вручную так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  #include <iostream>
using namespace std;
 
int *swap(int *x){
    (*x)++;       //инкремент переменной на которую ссылается x
    
    return x;    //возврат указателя
}
 
 
 
int main(){
    int x = 100;
    
    cout << swap(&x) << "\n";
    
    *swap(&x) = 2; //теперь x = 2;
    cout << x << "\n";
 
    return 0;
}
и попробовал последнее ещё так:

C++
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 #include <iostream>
using namespace std;
 
int *swap(int x){
          
    int *t = &x;
    return t;
}
 
 
 
int main(){
    int x = 100;
    
    cout << swap(x) << "\n";
    
    *swap(x) = 2; //x почему - то не изменился?;
    cout << x << "\n";
 
    return 0;
}#include <iostream>
using namespace std;
 
int *swap(int x){
          
    int *t = &x;
    return t;
}
 
 
 
int main(){
    int x = 100;
    
    cout << swap(x) << "\n";
    
    *swap(x) = 2; //x почему - то не изменился?;
    cout << x << "\n";
 
    return 0;
}
Почему в последнем примере не изменился x?

Добавлено через 5 минут
И вот ещё последнее очень интересно:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
 
int *swap(int x){
          
    int *t = &x;
    return t;
}
 
 
 
int main(){
    int x = 100;
    int *;
    cout << swap(x) << "\n";
    
    p = swap(x) ; // p указатель  на x
    *p =2;          //присвоим x = 2;
    cout << *p;    //выведет значение 2
    cout << x << "\n"; //выведет значение 100
 
    return 0;
}
Объясните пожалуйста 2 последних пример (особенное последний). Не пойму p ссылается на локальную переменную ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru