티스토리 뷰
2021.03.03.수
이중 포인터의 활용 : 포인터 값을 바꾸는 함수(swap_prt)의 매개변수
void swap_ptr(char** ppa, char** ppb){
char *temp = *ppa;
*ppa = *ppb;
*ppb = temp;
}
✔ 이중 포인터는 포인터의 값을 바꾸는 함수의 매개변수에 사용된다.
✔ 2개의 포인터 변수에 문자열 상수의 주소가 각각 저장되어 있는 경우 이중 포인터를 활용해
✔ 포인터 변수가 가르키는 문자열 상수의 주소를 바꾸어줄 수 있다.
✔ 변수의 swap함수를 이중 포인터를 사용해 구현해보자.
이중 포인터의 활용 : 포인터 배열을 매개변수로 받는 함수
//포인터변수를 저장하는 이중 포인터와 int형 변수를 매개변수로 받는 함수
void print_str(char **pps, int cnt);
int main(void){
char *ptr_ary[]={"cat", "eggle", "rabbit"}; //포인터 배열
point_str(ptr_ary, count);
count = sizeof(ptr_ary) / sizeof(ptr_ary[0]);
return 0;
}
void print_str(char** pps, int cnt){
for(int i=0; i<cnt; i++){
printf("%s\n", pps[i]);
}
}
✔ 이중 포인터는 포인터 배열을 매개 변수로 받는 함수에도 사용한다.
✔ 이중 포인터는 포인터 변수를 저장하기 위한 저장 공간이고
✔ 포인터 배열명은 첫 번째 배열 요소의 주소이므로 즉, 배열의 이름은 포인터 변수의 주소이다.
✔ 그러므로 이중 포인터 형태의 변수를 매개변수로 사용할 때에는, 포인터 변수를 인수로 전달해야 한다.
저장 공간 | 저장할 값의 형태 | (예) |
int형 변수 | 정수 | int a = 10, b = 20 ; |
int형 배열 | int형 변수 / 정수 | int arr[3] = { a, b, 30 } ; |
포인터 변수 | 상수의 주소 | int *p = &arr[1]; |
이중 포인터 변수 | 포인터 변수의 주소 | int **pp = &p; |
포인터 변수 배열 | 포인터 변수 / 주소값 상수 | int *p_arr[3] = { &arr[0], &arr[1], &arr[2]} ; |
✔ 지금까지 포인터 = 주소라고 은연중에 생각했던 것 같다.
✔ int형 변수는 int형 상수를 저장하기 위한 공간이고, 포인터 변수는 주소를 저장하기 위한 공간이다.
✔ int형 변수와 정수의 의미가 다른 것처럼 포인터 변수와 주소는 다른 개념이라는 걸 인지할 필요가 있다.
[참고] 한빛미디어-혼자 공부하는 C언어 유튜브 강의 / 엘리스 트랙-혼자 공부하는 C언어 / 길벗-C언어 코딩 도장 / 위키백과
'BackEnd > C' 카테고리의 다른 글
[20일차] 4. 2차원 배열과 배열 포인터 (0) | 2021.03.03 |
---|---|
[20일차] 3. 배열 요소의 주소와 배열의 주소 (0) | 2021.03.03 |
[20일차] 1. 이중 포인터 (0) | 2021.03.03 |
[19일차] 3. 포인터 배열 복습 예제 (0) | 2021.03.02 |
[19일차] 2. 3차원 배열/포인터 배열 (0) | 2021.03.02 |
댓글