C 언어에서 동적으로 배열크기를 지정하는 방법은 무엇인가요??
C 언어에서 동적으로 배열크기를 지정하는 방법은 무엇인가요??
int a;
scanf(a)
char arr[a] 이런식으로 동적으로 할당해주고 싶은데
할당이 안되네요 사용자로부터 입력받은 크기로 배열을 만들고싶습니다.
malloc ? 포인터? 이런걸 쓰면 된다는거같은데 아직 배우질않아서요
다른 언어처럼 편하게 동적할당 할수있는 방법은 없나요??
GCC에서는 char arr[a];로 할당받을 수 있습니다.
VC++ 등 일부 컴파일러는 가변 길이 배열(Variable Length Array, VLA)을 허용하지 않는데컴파일러가 VLA를 허용하지 않는 경우에는 어쩔 수 없이 동적할당을 써야만 합니다.
C에서 편하게 동적으로 배열 크기를 지정하려면 VLA를 허용하는 GCC같은 컴파일러를 써야 합니다.
... 사실 동적 할당이라는 게 컴파일 시점에 크기가 정해지지 않은 할당을 말하는 건 아닙니다.
스택에 할당받아도 재귀호출이나 VLA로 컴파일 시점에 크기를 알 수 없는 경우도 있습니다.
스택에는 FIFO로, 순서대로 할당/해제하기 때문에 정적 할당이라고 하고, (빈 공간도 안 생깁니다.)
힙에는 아무때나 할당/해제하기 때문에 동적 할당이라고 합니다. (할당/해제 순서가 없습니다.)안녕하세요.
C언어에서 동적 배열은 포인터를 이용하여 구현할 수 있습니다.
int *test_array; int size = 0;위와 같이 포인터로 구현하고 size를 초기화 합니다.
그리고 아래와 같이 동적 배열을 구현한 함수를 정의합니다.
void ReSize(int** test_array,int *size) { (*size)++; *test_array = (int*)realloc(*test_array, sizeof(int) * (*size)); }이렇게 하면 함수를 호출할 때마다 배열 크기를 하나씩 늘릴 수 있습니다.
이를 응용하면 원하는 수로 늘리거나 줄일 수 있습니다.
감사합니다.