포인터 변수는 같은 유형의 데이터 유형(예: int 또는 string)을 가리키며 * 연산자로 생성됩니다. 작업 중인 변수의 주소가 포인터에 할당됩니다.
string food = "Pizza"; // A food variable of type string
string* ptr = &food; // A pointer variable, with the name ptr, that stores the address of food
// Output the value of food (Pizza)
cout << food << "\n";
// Output the memory address of food (0x6dfed4)
cout << &food << "\n";
// Output the memory address of food with the pointer (0x6dfed4)
cout << ptr << "\n";
이 예제에서는 문자열 변수 food와 이 변수의 메모리 주소를 저장하는 포인터 ptr를 생성합니다. 그런 다음 food의 값과 메모리 주소를 출력합니다.
팁: 포인터 변수를 선언하는 방법은 세 가지가 있지만 첫 번째 방법이 더 선호됩니다.
string* mystring; // Preferred
string *mystring;
string * mystring;
역참조
메모리 주소와 값 가져오기
이전 페이지의 예에서 우리는 포인터 변수를 사용하여 변수의 메모리 주소를 얻었습니다(& 연산자와 함께 사용). 그러나 * 연산자(역참조 연산자)를 사용하여 포인터를 통해 변수의 값을 얻을 수도 있습니다.
string food = "Pizza"; // Variable declaration
string* ptr = &food; // Pointer declaration
// Reference: Output the memory address of food with the pointer (0x6dfed4)
cout << ptr << "\n";
// Dereference: Output the value of food with the pointer (Pizza)
cout << *ptr << "\n";
이 예제에서는 포인터 ptr을 사용하여 food의 메모리 주소를 출력한 후, 역참조 연산자(*)를 사용하여 food의 값을 출력합니다.
여기서 이 * 기호는 혼동스러울 수 있습니다. 왜냐하면 우리 코드에서 이 기호는 두 가지 다른 일을 하기 때문입니다.
string* ptr 선언에서 사용하면 포인터 변수를 생성합니다.
선언에 사용되지 않으면 역참조 연산자로 작동합니다.
포인터 값 수정
포인터의 값을 변경할 수도 있습니다. 하지만 이렇게 하면 원래 변수의 값도 변경된다는 점에 유의하세요.
string food = "Pizza";
string* ptr = &food;
// Output the value of food (Pizza)
cout << food << "\n";
// Output the memory address of food (0x6dfed4)
cout << &food << "\n";
// Access the memory address of food and output its value (Pizza)
cout << *ptr << "\n";
// Change the value of the pointer
*ptr = "Hamburger";
// Output the new value of the pointer (Hamburger)
cout << *ptr << "\n";
// Output the new value of the food variable (Hamburger)
cout << food << "\n";
이 예제에서는 포인터 ptr을 사용하여 food의 값을 "Hamburger"로 변경합니다. 포인터를 통해 값을 변경하면 원래 변수 food의 값도 함께 변경됩니다.
코드 설명:
string food = "Pizza";: food라는 문자열 변수를 선언하고 "Pizza"로 초기화합니다.
string* ptr = &food;: food 변수의 주소를 저장하는 포인터 ptr를 선언합니다.
cout << food << "\n";: food 변수의 값을 출력합니다.
cout << &food << "\n";: food 변수의 메모리 주소를 출력합니다.
cout << ptr << "\n";: 포인터 ptr에 저장된 메모리 주소를 출력합니다.
cout << *ptr << "\n";: 포인터 ptr을 통해 food 변수의 값을 출력합니다.
*ptr = "Hamburger";: 포인터 ptr을 통해 food 변수의 값을 "Hamburger"로 변경합니다.