C++2일차
C++스타일의 범위 기반 for문 사용법
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> using namespace std; int main(){ int arr[10] = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3}; for(int n : arr){ cout << n << endl; } return 0; } | cs |
아래는 C++스타일의 범위 기반 for문 사용한 예제이다 위의 예제는 배열에 있는 내용이 차례로 출력하는 예제이다. 단 이렇게 할경우 배열의 값을 바꿀수는 없다
쉽게설명) for안에 int n = arr[(순서)]이런식으로 돌아간다는 거입니다.
1 2 3 4 5 6 7 8 9 10 | #include <iostream> using namespace std; int main() { int arr[10] = { 3, 1, 4, 1, 5, 9, 2, 6, 5, 3 }; for (int &n : arr) { n++; } } | cs |
하지만 for안의 int n에 &을 붙임으로서 배열의 값을 변환시킬수 있다.
쉽게설명)for안에 int &n = arr[(순서)] 이런식으로 해서 값을 변환 시킬수 있다는 거 입니다.
C++ 레퍼런스 변수
1 2 3 4 5 6 7 8 9 10 11 | #include <iostream> using namespace std; int main() { int a(5); int &p = a; p = 10; cout << p << endl; cout << a << endl; } | cs |
위의 예제는 p라는 레퍼런스라는 변수를 만들고 a라는 변수를 가르키고 있습니다. 따라서 p의 값이 변하면 a도 변하는 것을 알수 있습니다. 단 레퍼런스 변수는 상수나 메모리에 저장이 되지 않은 값은 레퍼런스 변수에 넣지 못합니다.
C++ r-value와 l-value
l-value는 단일 식를 넘어 지속되는 개체를 참조하며 l-value는 이름이 있는 모든 변수라 할수 있습니다. 그럼 r-value는 반대겠죠?
ex) 위의 레퍼런스 변수의 예저를 보면 p=10; 을 볼때 p를 l-value 10을 r-value라고 할수 있습니다.