2016-10-26 1 views
-4

가변 크기의 정수 배열을 포함하는 C로 정수 목록을 만들고 싶습니다. 주 목록의 길이는 변경할 필요가 없습니다.C에서 목록의 정수 목록 만들기

어떻게 그것을 선언 할 것입니다 - 내 구현을 - 특히 내 접근이 작동하지 않습니다 :

int dataArray[length]; 
int dataArray[0] = [1,2,3]; 
int dataArray[1] = [5,6]; 
. 
. 
. 
populate 

for(int a = 0; a<sizeof(dataArray); a++) { 
    tempArr = dataArray[a]; 
    for(into = 0; b>sizeof(tempArr); b++) { 
     print(dataArray[a][b]) 
    } 
} 
+0

작동하지 않는 기능은 무엇입니까? 컴파일되지 않습니까? 실행되지 않습니까? 하드 드라이브를 포맷 했습니까? 'print' 란 무엇입니까? –

+0

나중에 가변 길이 배열의 사용을 계획 할 때 * 가변 길이 배열을 추측 할 계획이 아니라면 구조체가'struct IList { size_t 길이; int * 값; }'. – WhozCraig

답변

1

기본 배열은 다른 배열에 대한 포인터를 보유 할 필요가있다. 따라서 int dataArray[length]이 아니어야합니다. int* dataArray[length] 이것은 정수 배열에 대한 참조량이 length 인 것을 의미합니다.

int* array[length]; 

int randomSizeArray[x]; 
randomSizeArray[0] = 1; 
. 
. 
. 
randomSizeArray[x] = 5; 
int* array[0] = randomSizeArray; 

또한 sizeof() 당신이 그것을 예상 한대로 작동하지 않습니다 - C에서 당신은 배열에있는 별도 얼마나 많은 요소를 저장해야합니다. 나는 당신이 기초에 대한 불안한 지식을 갖고있는 것처럼 C 튜토리얼을 처음부터 읽기를 권할 것이다.

1

sizeof은 요소 수가 아닌 바이트 수를 산출합니다.

요소 크기를 찾기 위해 요소 크기로 배열 크기를 나눕니다.

int dataArray[length]; 
int dataArray[0] = [1,2,3]; 
int dataArray[1] = [5,6]; 
... 

// for(int a = 0; a<sizeof(dataArray); a++) { 
for(size_t a = 0; a<sizeof(dataArray)/sizeof(dataArray[0]); a++) { 
    tempArr = dataArray[a]; 
    // for(into = 0; b>sizeof(tempArr); b++) { 
    for(into = 0; b>sizeof(tempArr)/sizeof(tempArr[0]); b++) { 

    // or do you really want 
    // for(size_t = 0; b<sizeof(tempArr)/sizeof(tempArr[0]); b++) { 

     print(dataArray[a][b]) 
    } 
}