https://www.youtube.com/watch?v=dEOWAs6CptA&list=PLgqG2uj21HgkcfVtlr5rPekQl5VWJEnIB&index=12
https://www.youtube.com/watch?v=Y4f8ZB1iQxw&list=PLgqG2uj21HgkcfVtlr5rPekQl5VWJEnIB&index=13
변수선언과정을 보면 val이라는 변수는 내부적으로 메모리의 주소값을 가지고 그곳에 값을 저장하게 된다.
int val = 3;
c++ 는 객체지향 프로그래밍이 가능하다. 이 말은 컴파일 시간이 아닌 실행시간에 어떠한 결정을 내릴 수 있다는 말이다. 배열을 예시로 들면 절차지향 프로그래밍에서는 배열의 크기가 미리 결정되어 있어야하지만 객체지향 프로그래밍에서는 배열의 크기를 실행시간에 결정할 수 있다.
포인터는 사용할 주소에 이름을 붙인다라고 이해하면 된다. 즉, 포인터는 포인터의 이름이 주소를 나타낸다.
c++에서 포인터는 간접값 연산자, 간접 참조 연산자라고 불리는 *을 이용하여 나타낼 수 있다.
선언을 할 때 *은 포인터를 나타내고, 포인터로 선언된 변수 b에서 *을 사용하면 메모리에 있는 값을 불러오는 기호로 사용한다. 포인터는 주소를 나타내기때문에 b와 &a(a의 주소)와 같게 된다
#include <iostream>
using namespace std;
int main(){
int a = 6;
int* b;
b = &a;
cout << "a의 값" << a << endl;
cout << "*b의 값" << *b << endl;
cout << "a의 주소" << &a << endl;
cout << "*b의 주소" << b << endl;
*b = *b + 1;
cout << "이제 a의 값은" << a << endl;
return 0;
}