티스토리 뷰

언어/C

[C언어] 정적할당과 동적할당

qkrgusqls 2023. 3. 24. 09:33

 

동적할당 : 메모리를 힙에서 할당 받는 방식

malloc을 통해서 메모리의 크기를 자유롭게 요청

 

정적할당 : 메모리를 스택에서 할당 받는 방식

컴파일 타임에 미리 결정된 크기만

 

int arr[20]; // 컴파일 타임에 결정 
int * arr = malloc(sizeof(int)*5); //런타임에 결정
 

 

사람의 이름과 나이를 저장하는 프로그램

 

#include <stdio.h>
#include <stdlib.h> // malloc 사용시 추가해야함
#define NAME_SIZE 20
int main() {

  printf("==이름과 나이를 입력하는 프로그램==\r\n");
  int count;
  int size = NAME_SIZE;

  while (1) {
  printf("몇명의 사람을 입력할겁니까?");
  scanf("%d", &count);
  if (count > 0) {
    break;}
    else {
      printf("1이상의 숫자를 입력해주세요.");
    }
    }
  int * ages = malloc(sizeof(int) * count);
  char * names = malloc(sizeof(char) * size * count);

  for (int i = 0; i < count; i++) {
    printf("%d번째 사람의 이름을 입력해주세요. : ", i + 1);
    scanf("%s", &names[i * size]);
    printf("%d번째 사람의 나이를 입력해주세요 : ", i + 1);
    scanf("%d", &ages[i]);
    }

  for (int i = 0; i < count; i++) {
    printf("%d번째 사람의 이름은 %s,나이는 %d입니다.\n", i + 1, names+i*size, *(ages+i));
    }
return 0;}

 

 

'언어 > C' 카테고리의 다른 글

[C언어] 주소, 포인터, 배열  (0) 2023.03.24
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/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
글 보관함