태그: const char *

학생1) const char *str은 str이 가리키는 문자열 내용을 변경하지 않겠다는 의미야. 학생2) 문자열 비교하는 함수처럼 입력 인자로 받은 문자열의 내용을 변경하지 않겠다는 의미로 신뢰성을 높일 때 사용하지.

C언어에서 문자열은 아스키 코드의 나열이예요.
특히 아스키 코드 값이 0인 문자를 널문자(‘\0’)라고 부르는데 문자열은 널문자를 만나기 전까지의 아스키 코드 나열이예요.
따라서 문자열을 char 형식 원소 배열을 선언할 때 널문자를 포함하여 원소 개수를 정하세요.
이 책에서는 문자열을 배열로 관리할 때 원소 개수를 나타내는 부분을 MAX_NAME_LEN+1 처럼 표현하고 있어요.

그리고 C언어에서는 문자열 리터럴 상수를 초기화 구문에서도 사용할 수 있어요.

◈ char 형식 배열에 문자열 초기화

◈ 실행 결과

 

문자열 리터럴 상수를 포인터 변수로 사용할 수도 있어요.
주의할 점은 포인터는 단순히 문자열이 있는 주소를 기억할 뿐이예요.
문자열을 변경하는 작업은 할 수 없어요.
따라서 문자열 데이터를 상수로 사용할 때는 const char *로 변수를 선언하세요.

선언문에 const 키워드를 나타내어 상수화하는 것을 알고 있죠.
포인터 변수를 선언할 때 const 키워드는 여러 위치에 표현할 수 있으며 위치에 따라 의미가 달라져요.

만약 선언한 이름 앞에 const가 붙으면 포인터 상수를 선언한 것이 되며 값을 변경하지 못해요.

포인터 선언문의 지시 연산자 * 앞에 const가 붙으면 가리키는 곳의 값을 변경하지 못한다는 의미예요.

참고로 const char *str2;와 char const *str2; 는 같은 표현이예요.

실제 프로그래밍을 하다보면 *앞에 const가 붙는 const char *str2;나 char const *str2; 와 같은 표현은 자주 만나요.
특히 함수의 입력 매개 변수로 사용할 때가 많은데 호출하는 곳에서 전달받은 문자열을 변경하지 않고 사용만 하겠다는 의미죠.

[C언어 무료 동영상 강의] 68. 문자열, 69. 문자열 사용 기초