int n; printf("입력하시오 : "); scanf("%d", &n);int arr[n][n];이렇게 하는거 아닌가요?왜 오류가 뜰까요? n이 아닌 상수값을 지정해줘야 한다는데요 ㅠㅠ
컴파일러에 따라 다르지만 기본적으로 선언시 배열의 인덱스에는 변수를 못넣는걸로 알고있음
동적할당 ㄱㄱ
헉... 그러면 어떻게 해야 할까요?? ㅠㅠ 동적할당이 뭐에요?
무엇보다 중요한건 배열 인덱스 상수값을 100으로 선언해놔도 추후에 다시 수정할 수 있다는 점 입니다.
아직 동적할당 안나갔구나 아래 달팽이문제 푸는거면 for문으로 하라는 의도같은데? 배열안쓰고
동적할당이 모죠?
ㄴ 나도 잘 몰라서 런타임에 heap영역에 메모리를 할당하는 기법이라고 밖에 말 못하겠음 아직 입문서수준이라
배열이 포인터라 변수를 못 넣음
어렵다
n을 명시 안 해주면 컴파일 타임에 메모리를 어떻게 할당해야할 지 알 수가 없음
ㄴ 그냥 일케 생각하면 쉬움 원하는 때에 메모리를 할당한다. 예를들어 scanf로 n을 받았을때 포인터 하나 만들어서 거기에 n개 할당해서 배열을 만든다 이렇게 그냥 입문서볼때면 동적할당할때 할당되는 메모리는 힙영역에 있다 이거만 알면될듯??
https://dojang.io/mod/page/view.php?id=318
참고하는 레후
쇼치키 좆같은거 맞음. 파이쏜이나 Js면 직관적으로 해결 가능한 건데 저리 해야함...
printf면 C코든데 배열 선언하면 데이터세그먼트에 위치할텐데 컴파일러가배열 사이즈를 모르니 배열을 만들 수가 없지. 그래서 동적 할당으로 힙에 위치시켜야하는 것임. - dc App
스택과 힙이라는 개념을 이해해야됨.
VLA 지원하는 컴파일러를 쓰세요 - 164260의 휘발성 계정