티스토리 뷰

학습자료

c/c++ 배열 동적할당

알 수 없는 사용자 2017. 1. 24. 14:55

동적할당 


 c 

▶1차원 배열 동적할당


int *k;

int input;

scanf("%d" , &input);


k = (int *)malloc(sizeof(int)*input);

▶2차원 배열 동적할당



int **k;

int input;

scanf("%d" , &input);


k = (int (*)[ ])malloc(sizeof(int)*10); // 행의 크기

k[0] = (int *)malloc(sizeof(int)*input); // 열의 크기

 

 c++ 


▶일반 변수



int *k = new int; // 동적으로 int 객체 할당

*k = 10;

delete k; // 동적으로 int 객체 제거

 


▶1차원 배열 동적할당



int size;

scans("%d", &size); // size = 20

int *arr = new int [size]; // 동적으로 20개의 메모리 할당


delete [ ] arr; // 동적으로 배열 제거

 


▶2차원 배열 동적할당



//int 형 2차원 배열 동적 할당

int ** alloc2(int row, int cols) // row : 행, cols : 열

{

if(row<=0 || cols <=0) return NULL;


int **arr = new int*[rows]; // 포인터 변수를 저장할 배열 = 각 행에 해당하는 배열의 주소를 저장하기 위한 배열

// 행렬의 각 행에 실제 데이터가 들어갈 배열을 할당하여 그 주소를 복사한다. 

for(int i=0; i<rows; i++)

arr[i] = new int [cols]; // 실제 각 행의 데이터를 저장할 배열 

return arr;

}


 

//int 형 2차원 배열 동적 해제

void delete2(int **arr, int row, int cols=0) // cols는 사용되지 않으므로 default처리

{

if(arr != NULL)

{

for(int i=0; i<rows; i++) delete[] arr[i]

delete[] arr; // 최종적으로 포인터 배열 arr를 해제한다. 

}


댓글
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크