Last active
May 1, 2025 17:46
-
-
Save sunmeat/d10529fb45f40fd43e30749998a6411f to your computer and use it in GitHub Desktop.
reference example C++
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <iostream> | |
using namespace std; | |
void vegas(int& a, int& b) | |
{ | |
// обмін значеннями двох змінних | |
int temp = a; | |
a = b; | |
b = temp; | |
} | |
int& get_max(int& a, int& b) | |
{ | |
// повернення максимальної змінної за допомогою посилання | |
return a >= b ? a : b; | |
} | |
void rectangle(double width, double height, double& square, double& perimeter) | |
{ | |
// обчислення площі та периметра прямокутника | |
square = width * height; | |
perimeter = (width + height) * 2; | |
} | |
int main() | |
{ | |
system("title C++ References example"); | |
int x = 10; | |
// створення посилань на змінну x | |
int& rx = x; | |
int& ry = x, &rz = rx; // два посилання в одному виразі | |
// int &ra; // оops! помилка! посилання потребує ініціалізації! | |
cout << rx << "\n"; // 10 | |
rx = 15; | |
cout << x << "\n\n"; // 15 | |
cout << &x << "\n"; | |
cout << &rx << "\n\n"; // та сама адреса!! | |
int y = 25; | |
// виклик функції для обміну значеннями змінних | |
vegas(x, y); | |
cout << x << " " << y << "\n"; // 25 15 | |
// зміна значення максимальної змінної через посилання | |
get_max(x, y) = 50; // O_O | |
cout << x << " " << y << "\n"; // 50 15 | |
// посилання не можна перенаправити! | |
ry = y; | |
cout << x << " " << y << "\n"; // 15 15 | |
// int &rb = 10; // оops! посилання зазвичай ініціалізуються l-value | |
const int& rc = 10; // константне посилання | |
// double &rd = x; // несумісність типів! | |
const double& re = x; // ок, оскільки типи автоматично перетворюються | |
double s, p; | |
// виклик функції для обчислення площі та периметра прямокутника | |
rectangle(10.1, 20.5, s, p); | |
cout << "\n" << s << " " << p << "\n\n"; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment