반응형
SMALL

학습목표

1. char형 포인터를 이용하여 문자열을 다룰 수 있다.

2. 포인터를 배열 형식으로, 배열을 포인터 형식으로 참조할 수 있다.

3. 포인터 배열을 사용할 수 있다.

4. 이중 포인터를 이해할 수 있다.

 

주요용어 

char형 포인터 : 문자열 처리에 효과적인 포인터

포인터 배열 : 포인터가 여러 개 사용될 때 포인터를 배열형식으로 사용

이중 포인터 : 자료가 있는 곳을 이중으로 가리키는 포인터

 

 

6.2.4 포인터와 배열

(1) char형 포인터

- 포인터는 문자열 처리에 효과적

- 문자열 처리에 char형 포인터 사용

     char  *cp = "computer"

 

char  *cp = "computer";                   

 

cp는 문자열의 시작 주소를 갖는다.      

 

따라서 값을 참조할 때와는 달리 포인터

변수cp에 주소를 치환하지 않는다.        

 

 

 

 

 

 

 

 

// char형 포인터의 사용 예

 

#include <stdio.h> 

void main(){ 
   char *cp = "COMPUTER";  // char형 포인터 변숫값은 문자열이 
   int i = 0;                       // 수록된 시작 주소('C' 주소
   do 
      printf("*(cp+%d) : %c \n", i, *(cp+i)); 
   while(*(cp+i++)!=0); }      // *(cp+i)를 구한 후 i 를 1증가

 

 

 

(2) 포인터와 배열

포인터를 이용한 1차원 배열의 참조

char s[ = "SCIENCE"

char *cp;

 

cp = s; ---> 포인터 cp를 이용하여 배열 s의 내용을 참조

 

 

배열은 포인터의 일부분

 

모든 배열은 포인터로 표현 가능

     cp +1 <-> &s[1]

  *(cp +1) <->   s[1]

 

 

 

 

// 포인터를 이용한 1차원 배열의 참조[예]

#include <stdio.h>
void main(){
   static int a[]={10, 20, 30, 40, 50};
   int *pt, b, c, d;
   pt=a;                   // 배열명을 사용하여 배열의 시작 주소를 할당 

   b=*pt + *(pt+3);   
   pt++;                 
   c=*pt + *(pt+3);    
   d=*pt +3;          
   printf("b=%d, c=%d, d=%d", b, c, d);       } 

 

 

** 포이너를 이용한 2차원 배열의 참조

 

int a[2][3];

int *pt;

pt = a;

 

 a   : 배열 a[2][3]의 시작 주소

a[0] : a[0] 행의 시작 주소

a[1] : a[1] 행의 시작 주소

 

 

 

 

// 포인터를 이용한 2차원 배열의 참조[예]

#include <stdio.h>
void main(){
   static a[3][3] ={{1,2,3},{4,5,6},{7,8,9}}; //static int 2차원 배열 a선언 및 초기화 
   int i, j, *pt;
   pt = a[0]; // pt = a 또는 pt =&a[0][0]과 동일 
   while(pt <= &a[2][2]){ // 2차원 배열 a의 마지막 원소까지 출력 

     for(i=0; i<3; i++){ 
         for(j=0; j <3; j++){ 
            printf("a[%d][%d] = %d ", i,j, *pt); 
            pt++;  } 
         printf("\n");    }    }    }

 

 

 

반응형
LIST

+ Recent posts