개발/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](== 값)의 주소값을 의미하며, 일종의 포인터다.