2012-05-16 2 views
0

C 나에게 중국어처럼하지만 난 몇 가지 코드C 숯불 다차원 배열 정의

struct Message { 
    unsigned char  state; 
}; 

char state [4][4] = { "OFF", "ON", "IL1", "IL2" }; 

이 메시지를 수신하는 간단한 서버입니다 작업을 얻었다. 그것의 구조체 부분은 분명하지만 그 다음에 그 배열 배열을 char합니다. 이 말은 4 개의 문자 배열을 포함하는 4 개의 다른 문자 배열을 말하는 것입니까? 여기서 정확히 무슨 일이 일어나고있는거야? 나는 이것이 어리석게 들리는 것을 안다. 그러나 나는 그것을 이해할 수 없다.

+0

예,이 경우 3 문자 + null 문자 – DGomez

+0

'C는 중국인과 비슷합니다'라는 말은 IT 대학 탈락의 주요 구절이 아닙니까? – Ulterior

+0

모르겠다. 내 친구들이 모두 졸업했다. ( – FWeigl

답변

2

즉, state은 4 문자 배열의 배열이며 각 문자는 4 문자 배열이며 "OFF \ 0", "ON \ 0", "IL1 \ 0"값으로 초기화됩니다. 및 "IL2 \ 0"

  +----+----+----+----+ 
state => |OFF |ON |IL1 |IL2 | 
     +----+----+----+----+ 
     ^state[0] 
       ^state[1] 
        ^state[2] 
         ^state[4] 
+0

{0FF} 부분은 배열의 "행"에 "표시"되어 있습니까? – FWeigl

+0

그들은 배열의 내용 – MByD

+0

그래서 모두 3 글자이기 때문에 char 상태 [4] [3]이면 충분 했습니까? – FWeigl

2

2 차원 배열입니다. 4 개의 요소의 배열을 만듭니다. 각 요소는 4 개의 char 배열입니다.

2

4 개의 문자 배열을 포함하는 4 개의 다른 문자 배열이 있습니까?

정확하게 맞습니다. state은 4 개의 char 서브 어레이의 어레이입니다.

각 서브 어레이는 4 개의 chars입니다. 해당 문자열 리터럴 ("OFF" 등)은 NUL을 4 문자로 채우고 하위 배열에 복사합니다.

0

마지막에 선언 된 char 상태 [4] [4]는 각 행에 4 개의 열이있는 4 개의 행을 갖는 2 차원 배열입니다. 할당 한 값은 상태 [0] [0], 상태 [0] [1], 상태 [0] [2], 상태 [0] [3]에 저장됩니다.

0

C에서는 char* 또는 char의 배열을 처리합니다. 따라서 문자열 배열이 있으면 char 배열로 이루어진 배열을 가질 수 있습니다.