개발/C

[C] 문자 배열과 문자 포인터(문자열)의 차이

윤J 2022. 10. 7. 19:54
문자 배열 문자 포인터(문자열)
char s1[10] = "kimsuhanmu"; char *s2 = "kimsuhanmu";
입력받은 문자열 개별 요소 수정 가능 (' '로 묶인 부분='k',
'i', 'm')
입력받은 문자열 개별 요소 수정 불가 (** but, "kimsuhanmu"라는 문자열 전체는 다른 걸로 수정 가능. "happy" 등으로)
프로그램 영역에 저장 시스템 영역에 저장
s1은 "kimsuhanmu"의 첫번째 요소의 주소만 가리킬 수 있는 상수 s2는 "kimsuhanmu"의 첫번째 요소의 주소를 가리키는 변수(다른 변수를 가리키는 것도 가능)
배열 크기 선언 시에 정적으로 결정 배열 크기 동적으로도 가능
C 언어는 매개변수로 배열이 선언되는 것을 허용하지 않음. 따라서 함수의 인자로 배열을 전달하지 못함. 배열을 함수의 매개변수로 전달할 시, 반드시 포인터 사용!

int happy(char *s2) {} // happy(&s2)

참고로 A[0], A[1], A[2] 등은 '값'이다.

int arr[10] = {1, 3, 4, 6, 7, 8, 6, 4}; 에서

arr은 arr[0](== 값)의 주소값을 의미하며, 일종의 포인터다.