35. 가변배열

P4·2023년 6월 15일
0
post-thumbnail

가변배열

  • 그동안의 배열은 크기가 고정이었지만? --> int a[10] = {~~~~~~}; 와 같이
#include <stdio.h>
#include <iostream>

int main(void)
{
	int a = 100;

	int arr[a] = {};

	return 0;
}
  • 이게 안되는 이유는?

  • main 함수의 stack 크기를 다 계산한 상태로 컴파일이 되어야 하는데?, 저 변수(a)의 값을 확신할 수 없어서 안되는거임

  • 그래서 변수말고 상수값을 넣어줘야 하는거임, const int a = 100;은 사용가능


구조체도 마찬가지

#include <stdio.h>
#include <iostream>

int b = 10;

typedef struct _tagST {
	int iArr[b]; // 얘도 당연히 안됨
}ST;

int main(void)
{
	const int a = 100;

	int arr[a] = {};

	return 0;
}
  • 프로그램을 실행시켜야 크기를 알 수 있는 자료형은 존재하지 않음, 이러면 연쇄적으로 문제가 생김

따라서 가변배열을 사용하려면?

  • Heap 영역을 사용할 수 밖에 없음

  • 자료형은 틀, 객체는 틀로 찍어낸 애들

  • 구조체를 이용해서 그동안 존재하지 않던 나만의 자료형을 만듬 <-- 구조체는 헤더파일 안에 있음

  • 다음 글의 코드 참고

profile
지식을 담습니다.

0개의 댓글