C언어 18강)++ 포인터와 문자열/ 문자열 포인터에서 인덱스로 접근하기
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 "읽기 전용"이기 때문이다.