티스토리 뷰

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언어 코딩 도장 / 위키백과

댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday