-
포인터와 문자열
[학습내용] [학습목표] ▪ 포인터 배열
▪ 배열 포인터▪ 2차원 배열과 포인터 배열에 대해 설명할 수 있다.
▪ 포인터를 이용하여 문자열을 처리할 수 있다.
▪ 배열 포인터의 개념과 용도에 대해 설명할 수 있다.포인터와 배열
1. 2차원 배열과 포인터
str[3][10] str = str[0] = &str[0][0]
a[2][3]
a[0][0] *(*a + 0 ) *(a[0] + 0 ) *( *(a+0) + 0 ) a[0][1] *(*a + 2 ) *(a[0] + 1) *( *(a+0) + 1 ) a[0][2] *(*a + 3 ) *(a[0] + 2 ) *( *(a+0) + 2 ) a[1][0] *(*a + 4 ) *(a[1] + 0 ) *( *(a+1) + 0 ) a[1][1] *(*a + 5 ) *(a[1] + 1 ) *( *(a+1) + 1 ) a[1][2] *(*a + 6 ) *(a[1] + 2 ) *( *(a+1) + 2 ) ▪ for문을 구성하는 초기식, 조건식, 증감식, 반복할 문장은 모두 생략할수 있음
2. 문자형 포인터
▪ 문자열 상수를 문자형 포인터 변수에 저장
puts(p); printf(“%s \n”, p); int i = 0 ; while ( p[i] ! = ‘\0’ ) printf( “%c”, p[i] ) ; printf(“\n” );
▪ char *str= “good morning”;에서 str의 문자열을 거꾸로 출력하는 프로그램
#include <stdio.h> int main() { char *str="good morning"; int i,count=0; while(str[i]){ count++; } for(i=count-1;i>=0;i--) printf("%c",*(str+i)); return 0; }
배열 포인터
1. 배열 포인터 개요
▪ 배열 포인터는 이차원 배열의 전체를 가리키는 용도로 사용
▪ int(*p)[5]; 크기가 5인 int 배열을 가리키는 포인터
int arr[3][5] = { { 1, 2, 3, 4, 5 }, { 6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }; int(*p)[5] = &arr[0]; //p를 int 5개 짜리 배열인 arr[0]의 주소로 초기화 함
▪ 배열 포인터를 &arr[0]으로 초기화 하는 대신, 간단하게 arr로 초기화 가능
int (*p) [ 5 ] = arr; //arr는 &arr[0]과 같은 의미임
▪ 배열 포인터 p로 2차원 배열처럼 참조 가능
inti, j; for ( i = 0 ; i < 3 ; i++ ) { for( j = 0 ; j < 5 ; j++ ) printf(“%d”, p[i][j]); //p[i][j]는 이차원 배열의 원소 arr[i][j]를 의미함 printf(“\n”); }
▪ 배열 포인터를 이차원 배열에 접근하기 위한 용도로 사용
▪ 2차원 배열에 대한 배열 포인터는 열 크기에 따른 변수 선언이 필요
1차원 배열 포인터 2차원 배열 포인터 선언 데이터 타입 * 포인터 변수명; 데이터 타입 (* 포인터 변수명)[크기]; 초기화 변수명 = 배열명; 데이터 타입 *변수명 = 배열명; 변수명 = 배열명; 데이터 타입 *변수명[크기] = 배열명; 예 int a[3]={1,2,3};
int *p=a;
p = a;int a[2][3]={{1,2,3},{4,5,6}};
int (*p)[3]=a;
p = a;▪ 배열 포인터의 증감 연산은 열 크기만큼 이동
2. 문자 포인터 배열
▪ 여러 개의 문자열을 하나로 묶어서 처리하는 방법으로 2차원 문자 배열을 이용
char str[][6] = { “good”, “nomal”, “bad” };
g o o d \0 \0 \0 n o r m a l \0 b a d \0 \0 \0 \0 printf(“%s %s %s ”, str[0], str[1], str[2] );
▪ 여러 개의 문자열을 하나로 묶어서 처리하는 방법으로 문자포인터 배열을 이용
char *str[] = { “good”, “nomal”, “bad” };
printf(“%s %s %s ”, str[0], str[1], str[2] );
학습정리
1. 포인터 배열
▪ 포인터 배열은 주소를 보관하는 배열임
▪ 포인터 배열을 이용하여 각 변수를 참조하는 것이 가능함
▪ 여러 개의 문자열을 하나로 묶어 처리하는 방법으로 문자 포인터 배열을 이용할 수 있음
2. 배열 포인터
▪ 배열 포인터란 배열 전체를 가리키는 포인터로 사용됨
▪ 배열 포인터 선언 형식은 “데이터 타입 (*포인터 변수명)[크기];”와 같은 형식으로 선언함
'Blog > JAVA기반 스마트웹 개발2021' 카테고리의 다른 글
프로그래밍 언어 활용 part 1 - 공용체와 열거체 (0) 2021.07.31 프로그래밍 언어 활용 part 1 - 구조체 (0) 2021.07.31 프로그래밍 언어 활용 part 1 - 포인터 활용 (0) 2021.07.29 프로그래밍 언어 활용 part 1 - 포인터 기초 (0) 2021.07.29 프로그래밍 언어 활용 part 1 - 문자열 (0) 2021.07.28 댓글