Language/C

[C언어] 문자열 포인터에서 인덱스로 문자에 접근하기

깨구르르 2024. 4. 11. 19:57
728x90

1. 인덱스로 문자 접근하기

#include <studio.ht>

int main() {
	char *s1 = "Hello";		// 포인터에 문자열 Hello의 주소 지정
    
    printf("%c\n", s1[1]);	// e: 인덱스의 1(두 번째)의 문자 출력
    printf("%c\n", s1[4]);	// o: 인덱스 4(다섯 번째)의 문자 출력
    printf("%c\n", s1[5]);	// 문자열 맨 뒤의 NULL(\0) 출력, NULL은 화면에 표시 X
    
    return 0;
}

s1[1]처럼 문자열 포인터를 인덱스로 접근했고,

printf에서 서식 지정자 %c로 문자를 출력했다.

이렇게 문자열 포인터를 인덱스로 접근하면 char와 같기 때문에 %c로 출력할 수 있다.

 

문자열 포인터에서 문자열 맨 뒤의 문자를 가져와보면 NULL이 들어있다.

NULL은 printf로 출력해도 화면에 표시되지 않는다.

 

문자열 포인터에서 인덱스로 문자를 가져왔으니 반대로 문자를 할당할 수도 있을까?

 


 

2. 인덱스로 문자 할당?

#include <studio.h>

int main() {
	char *s1 = "Hello";		// 포인터에 문자열 Hello의 주소 저장
    						// Hello가 있는 메모리 주소는 읽기 전용
                            
    s1[0] = 'A';			// 문자열 포인터의 인덱스 0에 문자 A를 할당
    						// 실행 에러
                            
    printf("%c\n", s1[0]);
    
    return 0;
}

실행을 해보면 문자열 포인터에 인덱스로 문자를 할당할 때 에러가 발생한다.

👉 문자열 리터럴이 있는 메모리 주소는 읽기 전용이기 때문이다.

👉 문자열 포인터인덱스로 접근하여 문자를 할당하면 안 된다.

 


 

출처

https://dojang.io/mod/page/view.php?id=1784

 

728x90