2014-02-23 3 views
1

나는 주어진 단어와 유사한 단어를 검사하는 "Autocorrect"프로그램의 자체 버전을 만들려고합니다. 이것을 달성하기 위해 표준 키보드의 글자 사이의 거리를 조사해야합니다. 그래서 단어가 다른 단어와 얼마나 "가까이"있는지 측정 할 수 있습니다.크기 3 문자 배열에 대한 포인터 배열에 대한 올바른 구문입니까?

내 프로그램에서

나는 " 'A'와 'A는'0 'A'와 'B 사이의 거리 사이의 거리를 뜻하는 배열

const char[3]* KEY_DISTS[] = { "aa0", "ab5", "ba5", "ac3", "ca3", "ad2", "da2" ,... }; 

을 쓰기 시작했습니다 '은 5,'b '와'a '사이의 거리는 5입니다.

그 정보는 문자 쌍을 정수로 매핑하는지도에 넣겠습니다.하지만 지금까지 올바르게 작성되었는지, 그리고 저에게 어떤 제안이 있는지 궁금합니다.

const char[3]* KEY_DISTS[] 

은 "크기가 3 인 문자 배열에 대한 포인터의 상수 배열"을 의미해야합니다. 맞습니까?

+0

: 대신 2 차원 배열을 가질 수처럼

는 소리? 직접지도를 초기화하지 않는 이유는 무엇입니까? 또는 파일을 사용하여 읽는 것이 좋습니다. 또한 거리가 키보드 레이아웃에 달려 있음을 주목하십시오 ... – leemes

+1

실제로 "크기 -3 배열의 문자 배열"을 원한다고 들립니다. 다른 말로하면,'const char KEY_DISTS [] [3] = .. 이라고 밝혔다. –

+1

또한 문자열 리터럴은 const char의 배열이지만 문자의 개수보다 하나 많은 요소입니다 (끝에는 null 종결 문자가 있기 때문에). 따라서 크기가 각각 4 개인 배열이 필요합니다. – leemes

답변

1

제목을 일치 선언은 다음과 같습니다 "arr" 네 개의 문자의 배열 (이 '\0' 종료 포함)이다

const char (*arr[])[4] = { &"aa0" }; 

하는 것으로하고 lvalues가 리터럴 문자열의 주소를 (취할 필요가 있고 정적 저장 기간이 있으므로 괜찮습니다). 당신이 처음부터 그 배열이 필요한 이유는 무엇

const char arr[][4] = { "aa0" };