학습목표
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"); } } }
'방송통신대학 > C 프로그래밍' 카테고리의 다른 글
구조체 struct (0) | 2020.06.11 |
---|---|
포인터와 배열 pointer array (0) | 2020.06.10 |
포인터변수의 선언과 참조 pointer variable Declaration (3) | 2020.06.08 |
배열과 포인터 array, pointer (0) | 2020.06.07 |
char형 배열과 문자열 (0) | 2020.06.06 |