2012-10-15 3 views
0

컴파일 중 간단한 한 줄 정지 코드가 있습니다. 무엇이 잘못 되었습니까?2-D 어레이가 제대로 초기화되지 않았습니다.

char *words[256] = new char[numOfWords][256]; 

array must be initialized with a brace-enclosed initializer 
+0

'words'는 ​​2 차원 배열이 아니라 256'char *'의 배열입니다. C++에서'std :: vector '또는'std :: array <256, std :: string>'을 사용하지 않을까요? – hmjd

+0

numOfWords char [256] 인 배열을 원한다. 나는 이것을 거꾸로하고 있나? 아무 말도없이이 작업을 시도하십시오 – MasterGberry

+0

질문에 대한 컨텍스트를 조금 더 설명하면 코드 스 니펫이 유용 할 수 있습니다. numOfWords 배열을 원하십니까? 하지만 당신은 256 요소의 배열을 선언하는 것? – bobestm

답변

3

char에 대한 256 개의 포인터 배열을 선언했습니다. 오류 메시지가 분명합니다 - 배열은 중괄호로 묶인 이니셜 라이저로 초기화해야합니다. 당신이 당신의 선언을 유지하려는 경우 따라서,이 작업을 수행 :

char* words[256] = { new char[wordlength], ... }; 
     // ^^^ this is effectively your numOfWords 

또는, 당신은 모두 초기화를 생략 할 수 있으며 나중에 개별 요소를 할당, 루프에서 말한다. 요소를 동적으로 할당하는 경우 요소를 올바르게 삭제해야 할 책임도 있습니다.

그런 다음이 256 개 char의 배열의 배열에 대한 포인터를 원하는 경우 : 당신이 2 차원 배열을 선언 할 때, 단순히 그것을 다른 배열에 대한 포인터의 배열을 생각

char (*words)[256] = new char[numOfWords][256]; 
+0

또는 아마도 : char * words [256] = {new char [numOfWords]}; –

+0

@Xploit 위와 같은 OP의 주석은 그렇지 않을 수도 있습니다. IMO. – jrok

+0

감사! 공장! 내 역 단어 기능은 이제 성공 :) – MasterGberry

0

합니다. 그러므로, 당신이 요구하는 것을하기 위해서 :

char *words[] = new char*[256]; 
for (int i = 0; i < 256; ++i) { 
    words[i] = new char[numOfWords]; 
} 
관련 문제