2016-10-18 3 views
-3

저는 초보자이며 C++입니다. 아래의 코드 스 니펫은 텍스트 입력을 구문 분석하기위한 프로그램에서 가져온 것입니다.const int와 const char * (왜 포인터를 사용해야합니까?)

const int MAX_CHARS_PER_LINE = 512; 
const int MAX_TOKENS_PER_LINE = 20; 
const char* const DELIMITER = ","; 

나는 그가 다른 변수에 const를 포인터를 사용하지 않은 것처럼 프로그래머가, const를 포인터 변수 DELIMITER에 대한 사용 이유에 대한 이유를 찾을 수 없습니다. 명확히하십시오.

+1

상수가 사용되는 지점을 보았습니까? 문자열을 기대하는 어딘가에서 사용되는 함수가 있다고 생각합니다 (여러 구분 문자를 지원하기 위해). – StoryTeller

+1

이 질문을 제대로 읽지 않는 사람들을 위해 : OP는 const int ** ** 포인터가없는 이유를 묻는 반면'const char' **는 포인터 **를 사용합니다. –

+0

나는 이것이 dup 질문이라고 확신한다. 나는 그것을 발견하지 못했습니다. 'const char *'는 문자열을 나타내는 '오래된'방법입니다. 'const char c = ',';'이 검색은 여러분에게 많은 읽을 거리를 줄 것입니다 : [C++ const char *] (http://stackoverflow.com/search?q=%5Bc%2B%2B%5D+const+char*) –

답변

4

51220int의 상수입니다. 값은 int 유형의 오브젝트 (변수)에 저장 될 수 있습니다. 포인터가 필요 없습니다.

","과 같은 문자열 리터럴은 간단한 스칼라 값이 아닙니다. 형식이 const char[2]이고 두 배열이 char입니다. (const은 읽기 전용을 의미합니다.)

배열과 포인터는 매우 다른 것들이 있지만 C와 C++의 배열은 요소에 대한 포인터를 통해 가장 일반적으로 조작됩니다. 따라서 char* 포인터는 예를 들어 문자열을 트래버스하고 각 요소에 대한 액세스를 제공하는 데 사용될 수 있습니다.

여분의 const은 포인터 자체를 수정할 수 없음을 의미합니다.

+0

"아무에게도 다르게 말하게하지 마세요!" - 포인트를 만들기위한 +1 – UKMonkey

관련 문제