코드를 참조하면,이 가리킬 수 있습니다 : 컴파일 시간의 array
의 크기를 알 수 있기 때문 물론 작동하지 않습니다
int array[length];
. 정적으로 크기가 정해지지 않은 배열 (컴파일 중 컴파일러의 관점에서)을 정의 할 수 없습니다!
배열 런타임 (즉, 동적)의 크기를 결정하려면 수행 한 방식으로 변수를 선언하여이를 수행 할 수 없습니다.
또한 const
과 length
을 사용하면 여기에서 작동하지 않습니다. const
을 제거하십시오.
할 수 있고해야 할 일은 int
포인터를 가져 와서 동적으로 할당되는 메모리의 시작 주소를 얻는 것입니다. malloc
기능을 사용할 수 있습니다. , 사용자가 예를 들어 10을 (즉, length
= 10)을 입력 한 경우, 여기에서
int *ptr = malloc(length * sizeof(int));
:
나는 당신을 위해 모든 코드를 작성하지 않습니다,하지만이 비슷한을 보이는 포함해야 및malloc
이 NULL
을 반환하지 않으면 ptr
포인터에 저장된 주소부터 최대 10 개의 정수를 저장할 수 있으며 물론 포인터 ptr
을 증가시켜 액세스 할 수 있어야합니다.
malloc
의 설명서 페이지를 읽는 경우 필요한 헤더 파일을 처리 할 수 있어야합니다. 필자가 필요한 파일을 쓰지 않고있다. 필자가 직접 man 페이지와 코드를 읽고 싶기 때문이다.
'배열'선언시 '길이'가 정의되어 있지 않으므로 그렇게 할 수 없습니다. 대신에 ['malloc()'] (http://en.cppreference.com/w/c/memory/malloc)를 사용할 수 있습니다. –
먼저'length'를'const'로 선언했습니다. 왜 당신이 그것을 바꿀 수/할당 할 수 있다고 기대합니까? (여기서'const'는 당신의 문제에 대해 전적으로 책임지지 않습니다.) – babon