char[]와 char * 차이점

|

char *와 char []의 차이

강의를 들으며 char *와 char []을 혼용해서 쓰는 경우가 많아

어떤 차이점이 있는 지 궁금하여 찾아보았다.

char *는 주소를 담고, char[]는 값을 담는다.

겉보기에는 같아보이나 내부적으로 담는 방법이 다르다.

그러므로 사용하는 목적도 다르다.

선언과 동시에 초기화를 하는 조건에서 비교를 해보자.

char *str1 = “I Love You”; char str2[] = “I Love You”;

str1은 포인터 변수이므로 주소를 담고 있으므로 값을 변경 할 수 없다. 즉, 상수로 문자열을 사용하고 싶다면 char * 타입으로 선언하면 된다.

반면 str2는 값을 변경할 수 있고, 인덱스로도 접근가능 하다. (컴파일러가 선언시 string 길이를 계산하여 배열에 할당해주기 떄문에) 변경이 잦은 문자열의 경우 char[] 타입으로 선언하여 사용하는 것이 편리하다.