Programming/C_C++

char*, char[] 차이

gukbap 2016. 11. 14. 10:10
반응형
상수 사용의 의미
     특정 값을 변경시키지 않기 위함

변수 사용의 의미
     특정 값을 변경시키기 위함

상수 사용하는 이유
     상수를 사용함으로써 프로그램에서 런타임 도중 변경해야할 데이터와 그렇지 않은 데이터를 구분할 수 있다.
     이를 구분함으로써 프로그램 개발이 명확해진다.

     만약 엄청 많은 문자열 변수로만 모든 문자열을 정의한다면 문자열 관련해서 에러가 발생했을 때 디버깅에 많은 시간을 들여야한다.
     하지만 이 때 상수를 사용해주면 이에 대한 문제를 예방할 수 있다.

     그래서 C에서는 문자열 상수와 변수의 기능을 모두 제공해준다.
     이 때 문자열 상수는 DATA 영역에 저장되는데, 이는 포인터형식으로 정의되어있어서 char*로 접근한다.
     변수는 char t[]와 같이 배열로 선언한다.


ex)

char* ptr = "name";
char arr[] = "smith";

ptr[0] = 't'; //error  상수를 조작할려고 하므로

ptr = arr; // no error. char*형식의 ptr에 담기는 내용이 변수가 아닐라 배열의 첫번째 요소를 가리키는 것이므로
arr = ptr; // error. 배열에 상수 대입 자체는 논리적으로 성립하지 않으므로.

ptr[0] = 't'; //no error  문자열 변수를 조작하는 것이므로


반응형

'Programming > C_C++' 카테고리의 다른 글

포인터와 배열의 관게  (0) 2012.02.23
상속  (0) 2011.10.10
C++에서의 파일 입출력 **  (0) 2011.08.18
전처리기 활용 **  (0) 2011.08.17
전처리기  (0) 2011.08.17