프로그래밍 언어/C

C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기

happy_life 2020. 11. 6. 16:27

C언어에는 문자열을 직접 선언하는 방법이 없다. 따라서 배열이나 포인터를 사용해 문자열을 처리한다.

 

배열을 사용해 문자열을 처리하는 방법은

 

abcdefgh123123.tistory.com/31?category=939526

 

C언어 10강 배열(array)/문자열(char 활용)

●배열(array) 1)정의: 같은 종류의 데이터 타입을 선언하기 위해 구성된 데이터의 집합. *일반변수 선언과의 차이: 일반변수의 경우에는 따로 분리된 변수 이름을 사용하지만, 배열은 변수를 한

abcdefgh123123.tistory.com

여기에 정리해 두었다.

 

포인터를 활용해 문자열 처리하기

 

문자는 1바이트 크기의 char에 저장할 수 있지만 문자열은 크기가 1바이트를 넘어서므로 char에 저장할 수 없다. 따라서 문자열은 변수에 직접 저장하지 않고 포인터를 이용해서 저장한다.

 

●코드 예제

#include <stdio.h>

int main()
{
    char character = 'A';         // 변수에 문자 'A' 저장
    char *string = "Hello";    // 포인터에 문자열 "Hello"의 주소 저장

    printf(" character: %c\n", character);    // A: %c로 문자 출력
    printf(" string: %s\n", string);    // Hello: %s로 문자열 출력

    return 0;
}

결괏값

 

string 포인터 변수에는 문자열 "Hello"의 메모리 주소 값 하나만이 저장된다. 

문자열을 출력할 때는 서식 지정자로 %s를 사용, *string이 아닌 string 사용하여 문자열을 출력한다.(*string을  사용하면, 메모리 주소가 나온다)

저번 강에서 다룬 역참조 *의 사용법과는 약간 다르다.  그냥 문자열은 다르게 쓰이는구나 하고 넘어가자.

 

문자열 포인터에서 인덱스로 접근하기

 

●인덱스 접근 코드 예제

#include <stdio.h>

int main()
{
   
    char* string = "Hello";    // 포인터에 문자열 "Hello"의 주소 저장


    printf("hello의 두번째 글자: %c\n", string[1]);   
    printf("hello의 null : %c\n", string[5]); //null은 출력안됨.
    return 0;
}

결괏값

문자열 포인터를 index로 접근하면 문자 char과 같기에 % c를 사용한다.

*주의사항

index에  string [1] = 'A' 이런 식으로 대입할 수 없다.

문자열이 있는 메모리 주소는 Only "읽기 전용"이기 때문이다.