포인터의 다양한 표현
C언어의 포인터를 이해하고 활용하는 것은 처음 접하는 사람들에게 다소 어려울 수 있는데, 그 중 하나의 원인은 여러가지 다양한 표현법 때문이다. 특히, 같은 메모리 주소를 가리키는 다양한 방법이 존재하는데, 이는 때로는 혼란을 줄 수 있다. 여기 몇 가지 대표적인 예시를 들어본다.
⭐ 1. 배열의 첫 번째 요소의 주소
int A[10];
- 표현법 1: A
- 배열의 이름만 사용하면, 배열의 첫 번째 요소의 주소를 나타낸다.
- 표현법 2: &A[0]
- 배열의 첫 번째 요소의 주소를 명시적으로 나타낸다.
⭐ 2. 함수 포인터
int func(int x) {
return x * 2;
}
- 표현법 1: func
- 함수 이름만을 사용하여 해당 함수의 주소를 나타낸다.
- 표현법 2: &func
- 함수의 주소를 명시적으로 나타내기 위해 함수 이름 앞에 &를 붙여 사용한다.
⭐ 3. 구조체 멤버의 주소
struct MyStruct {
int x;
};
struct MyStruct *ptr = &myStruct;
- 표현법 1: (*ptr).x
- 구조체 멤버 x의 주소를 직접 나타낸다.
- 표현법 2: ptr->x
- 구조체의 시작 주소를 int *로 캐스팅하여, 첫 번째 멤버 x의 주소를 얻는다. 이는 구조체가 x로 시작한다고 가정할 때 유효하다.
⭐ 4. 포인터를 통한 배열 접근
int arr[3] = {10, 20, 30};
int *ptr = arr;
- 표현법 1: ptr[0]
- 포인터를 배열처럼 인덱싱하여 첫 번째 요소에 접근한다.
- 표현법 2: *ptr
- 포인터를 역참조하여 첫 번째 요소의 값을 얻는다.
⭐ 5. 문자열과 포인터
char *str = "Hello";
- 표현법 1: str
- 포인터 변수 str을 사용하여 문자열의 첫 번째 문자의 주소를 나타낸다.
- 표현법 2: &str[0]
- 문자열의 첫 번째 문자의 주소를 명시적으로 나타낸다.
이러한 예시들은 C언어에서 포인터와 관련된 다양한 표현법들이 어떻게 유사한 결과를 제공할 수 있는지를 보여준다. 포인터는 강력하지만, 그 사용법을 정확히 이해하고 사용하는 것이 중요하다.
728x90
반응형
'C언어 30강' 카테고리의 다른 글
[C/C++ Tip] 30. C언어 Unit Test 종류 (2) | 2024.11.12 |
---|---|
[C/C++ Tip] 29. C언어 Unit Test (0) | 2024.11.12 |
[C/C++ Tip] 27. C언어 데이터 형식 범위 (0) | 2024.11.11 |
[C/C++ Tip] 26. Char, String 기본 사용법 (1) | 2024.11.10 |
[C/C++ Tip] 25. C언어 2차원 배열 (0) | 2024.11.10 |