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
'Language > C' 카테고리의 다른 글
[정보처리기사] 2022 C 프로그래밍 언어 문제 (0) | 2024.04.16 |
---|---|
[C언어] 구조체 포인터 선언 및 메모리 할당 (0) | 2024.04.13 |
[정보처리기사] 2023 C 프로그래밍 언어 문제 (2) | 2024.04.11 |
[C언어] 문자와 문자열 포인터 (0) | 2024.04.11 |
[C언어] 배열 형태로 문자열 선언하기 (0) | 2024.04.11 |