티스토리 뷰
동적할당 : 메모리를 힙에서 할당 받는 방식
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 |
---|