2012-02-09 4 views

답변

2

정의하고 배열을 초기화하는 올바른 방법은

char Lookup[][3] = {"00", "01", "02", "03", "04", "05", "06", "07", "08"}; 

Lookup 자체입니다 배열의 각 요소 : 다음 건설 컴파일러는 "예상 표현"오류를 제공 작동하지 않습니다 다른 3 바이트 배열. 제로 터미네이터 (zero terminator)로 계산하면 2 자 길이의 문자열에 충분한 공간입니다.

배열의 요소의 수는, 예를 들면 int의 배열을 정의하기

int k; 
for (k = 0; k < sizeof Lookup/sizeof *Lookup; k++) { 
    printf("element at index %d: %s\n", k, Lookup[k]); 
} 
+0

0 종결자를 없애는 방법이 있습니까? –

+0

(정말 빠른 알고리즘을 찾기 위해 조회 테이블을 만들 필요가 있습니다. 0 터미네이터를 사용하면 더 복잡하고 느려질 것입니다) –

+1

가장 안쪽의 배열을 2 바이트로 정의하면 결과 요소는 더 이상 문자열이 아니지만 가능합니다 . 문자열이 아니기 때문에 나는 보통'char'보다는'unsigned char' (또는'signed char')를 사용하여 다소 더 명확하게하고 싶습니다 :'unsigned char Lookup [] [2] = { "00", "01", "02", "03", "04", "05", "06", "07", "08"}; ** 요소는 더 이상 문자열이 아닙니다 **. 'printf'에서''% s "'를 사용하는 것은 에러입니다 (''에서 많은 함수를 사용하는 것과 같습니다). – pmg

2

같이 표현 sizeof Lookup/sizeof *Lookup 사용할이다

int int_array[10]; 

정의하고 어레이를 초기화 int :

int int_array[] = { 1, 2, 3, 4, 5 }; 

배열을 초기화 할 경우 요소 수를 지정하는 것은 선택 사항입니다.

관련 문제