포인터의 개념
변수의 메모리 주소를 담는 타입이 바로 포인터이다.
포인터는 메모리 동적할당, 데이터를 복사하지 않고 함수 매개변수로 사용, 클래스 및 구조체를 연결할 때 사용된다.
class Node{
public:
int data;
Node* next;
};
C++
복사
다음 코드를 보면 int* a라는 &i라는 i의 주소를 담는 포인터를 정의한 것을 볼 수 있다.
<타입>* 형태로 포인터를 정의한다.
예를 들어 string타입 변수의 메모리 주소를 담을 때에는 string* 하고 선언.
string s ="kundo";
int main(){
i = 0;
int* a = &i;
cout << a << '\n';
string* b = &s;
cout << b << '\n';
return 0;
}
C++
복사
역참조 연산자
*은 사용하는 위치에 의해 다양한 용도로 사용된다.
곱셈 연산, 포인터 타입의 선언, 역참조 이다.
int main() {
string a = "abcda";
string* b = &a;
cout << b << '\n';
cout << *b << '\n';
return 0;
}
C++
복사
array to pointer decay
배열의 이름을 주소값으로 쓸 수 있다.