c언어에는 문자(char)자료형은 있지만 문자열(string)은 없다.
char 자료형의 크기는 1byte이므로 문자 하나밖에 저장할 수 없기때문에 이것을 배열처럼 나열하여 문자열을 사용한다. 이런 이유로 문자열을 사용하는 2가지 방식이 있다.
!중요!
char 배열이름[크기] = "문자열";
char s1[6] = "Hello";
문자열 배열의 크기를 지정할 때 "문자열+NULL"까지 생각해주어야한다.
"Hello"같은 경우 5문자지만 NULL문자의 공간을 생각해서 6개를 지정해주어야 한다.
char s1[] = "Hello"; 처럼 문자열을 바로 초기화 한다면
크기를 생략해서 선언할 수 있다.!!
배열 형식 문자열은 배열 선언할 때 즉시 문자열로 초기화를 해야한다.
안그러면 인덱스별 문자를 할당하는 방법으로 해야됨..!
배열형식 문자열은 배열자체에 문자들이 복사되어 있는 형식이기 때문에
인덱스로 접근하여 변경할 수 있다.
s1[0] = 'A';
printf("%s\n", s1);
>>> Aello
char *포인터이름
char a = 'a';
char *s1 = "Hello";
char *s1는 변수에 직접 저장하지 않고 포인터처럼 문자열의 메모리 주소를 가지고 있다.
문자열 리터럴은 읽기전용이라서
s1[0] = 'a'; 처럼 인덱스로 접근하여 변경하면 오류가 난다.