3 가지 가변 크기 배열이 있습니다. 단순히 하나는 2D char
어레이이고 다른 두 개는 unsigned int
어레이입니다.배열이 충돌하지 않도록하려면 어떻게해야합니까?
;
char names[numberOfPeople][MAX_NAME_SIZE + 1];
unsigned int ages[numberOfPeople];
unsigned int weights[numberOfPeople];
매크로
MAX_NAME_SIZE
는 프리 프로세서로 (10)로 정의된다 그래서 사람들이 공통의 이름을 보자.
numberOfPeople
은 사용자에게 묻고, 사용자는
fgets
을 입력하고 일부 절차 후에 변수로 읽습니다.
VLA를 사용하는 것이 좋지만 배열 정의 뒤에 사용자의 변수 값이 numberOfPeople
이되는 기능이 있습니다. 그래서 어레이는 변경되기 전에 numberOfPeople
의 초기화 된 값으로 정의됩니다.
이제는 문제가 있습니다. 어떻게 동적으로 메모리를 할당하고 나중에 배열을 초기화 할 수 있습니까? 내가 calloc
에 대한 몇 가지 문서를 읽었지만, 알 수 있듯이 배열은 배열에 대한 포인터가 아닙니다. 그래서 calloc
을 사용하는 올바른 구문을 찾을 수 없습니다. void *
으로 되돌아갑니다. 어떻게해야합니까?
배열을 배열의 포인터로 정의해야합니까? 그리고 첫 번째 배열은 char
배열입니다. 중요합니까?
** 'numberOfPeople'이 초기화 된 후 ** 배열의 선언을 넣지 않는 이유는 무엇입니까? –
여기에 메모리를 할당 할 필요가 없습니다. 사용자에게 질문하고 입력을 확인한 후 배열을 선언하십시오. – Chnossos
그럼, 다른 제안은 전혀 없습니까? – Leviathlon