Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Tags more
Archives
Today
Total
관리 메뉴

Hello Security World

C언어 [C언어 포인터와 문자열] 본문

카테고리 없음

C언어 [C언어 포인터와 문자열]

프로앱등이 2020. 5. 3. 19:37

포인터와 문자열

C언어에서는 문자열을 처리를 위한 데이터 타입은 제공되지 않는다. 그렇기 때문에 문자열을 처리하기 위해서는

배열이나 포인터를 이용해야 한다. 배열과 포인터 변수를 사용하여 문자열을 처리하는 두가지 방법의 특징을 정리하면

다음과 같다.

배열을 사용할 경우

포인터 변수를 사용할 경우

문자열을 구성하는 각각의 문자가 배열 요소의 값으로 저장

포인터 변수는 문자열이 보관된 주소만을 가짐

사용되는 메모리 크기는 배열의 크기와 동일

문자열은 따로 메모리에 저장되기 때문에 포인터 변수의 크기와

문자열의 크기를 합한 공간이 필요함

문자형 배열로 문자열을 처리하기 위해서는 Null('\0') 문자를 함께 저장할 공간을 반드시 확보 해야 한다 문자열의 실제 길이보다 1byte크게 지정해야 한다. 그 이유는 Null을 만나야 문자열의 끝이라는 것을 컴파일러가 인식하기 때문이다.

예제) 배열과 포인터를 사용해 문자열을 처리하는 프로그램

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <stdio.h>
 
//포인터를 사용하여 배열 요소의 합을 구하는 프로그램 
int main()
{
    char strarr[] = "ARRAY HELLO"//배열의 크기는 자동으로 지정
    char* str = "POINTER HELLO";
    int i,j;
    
    printf("배열로 선언 : "); 
    for(i=0;i<15;i++){
    printf("%c",strarr[i]);
    }
    printf("\n포인터로 선언 : ");
    for(j=0;j<15;j++){
    printf("%c",str[j]);
    }
    return 0;
}
실행 결과 
배열로 선언 : ARRAY HELLO
포인터로 선언 : POINTER HELLO
 

 

위와 같이 두가지의 방법으로 C언어 에서는 문자열을 처리할수 있다. 문자열을 처리함에 있어 java는 String이라는 데이터 타입이

존재하지만 C언어는 배열 이나 , 포인터로 정의해야 한다. 그게 C언어의 매력이 아닐까 생각한다.