화살표 접근(Pointer access)은 C와 C++에서 구조체 포인터를 통해 구조체의 멤버에 접근할 때 사용하는 연산자이다. ->
연산자를 사용하며, 이를 "화살표 연산자" 또는 "화살표 접근"이라고 부른다.
구조체 포인터를 통해 구조체의 멤버에 접근하는 상황에서, 간접 접근(dereference)와 멤버 접근을 결합한 방식이다. 이 연산자는 포인터가 가리키는 구조체의 멤버에 쉽게 접근할 수 있게 해준다.
#include <stdio.h>
struct Person {
char name[50];
int age;
};
int main() {
struct Person person1 = {"Alice", 25};
struct Person *ptr = &person1;
// 화살표 연산자를 사용하여 구조체 멤버에 접근
printf("Name: %s\n", ptr->name);
printf("Age: %d\n", ptr->age);
return 0;
}
struct Person
.name
과 age
.ptr
: person1
을 가리키는 구조체 포인터.ptr->name
: person1.name
에 접근하는 방법과 동일하게, 포인터를 사용하여 person1
의 name
멤버에 접근.ptr->age
: person1.age
에 접근하는 방법과 동일하게, person1
의 age
에 접근.화살표 연산자를 사용하지 않고도, 포인터가 가리키는 구조체 멤버에 접근할 수 있다. 점 연산자(Direct access)는 구조체 변수를 사용해 멤버에 직접 접근할 때 사용한다. 역참조(dereference)를 먼저 한 후에 점(.
) 연산자를 사용해야 한다.
(*ptr).name
(*ptr).age
(*ptr)
: ptr
이 가리키는 구조체를 역참조하는 것이고, 그 다음에 .
연산자를 사용하여 구조체의 멤버에 접근함.
화살표(->) 연산자
=점(.) 연산자
- 화살표 접근(->)은 구조체 포인터를 통해 구조체의 멤버에 접근할 때 사용하는 연산자.
struct_pointer->member
는struct_variable.member
와 동일한 의미로, 포인터가 가리키는 구조체의 멤버에 간단하게 접근할 수 있게 해줌.화살표 연산자의 편리함:
화살표 연산자는
(*ptr).name
처럼 괄호를 여러 번 사용해야 하는 불편함을 줄이기 위해 도입되었다.ptr->name
처럼 간단하게 포인터가 가리키는 구조체의 멤버에 접근할 수 있도록 만든 것이다.