c언어 기초 썸네일형 리스트형 c언어 동적 메모리 할당하는 이유 프로그램이 실행되려면 메모리가 필요하다. 실행 파일이 메모리에 로드되어야 실행될 수 있고, 또 프로그램에서 선언하는 변수들도 메모리에 할당된다. int a; double b; 컴파일러는 변수들이 값을 제대로 보관하도록 변수 타입에 맞는 크기만큼 메모리를 할당한다. 변수 a는 정수형이므로 4바이트, 변수 b는 실수형이므로 8바이트가 할당된다. 이렇게 미리 필요한 메모리량을 알려주는 할당을 정적할당이라고 한다. 프로그램을 작성할 때 필요한 메모리량을 지정하는 정적할당과는 달리, 실행 중에 필요한만큼 메모리를 할당하는 기법을 동적할당이라고 한다. 메모리를 동적으로 할당하면 메모리 관리에 효율적이라고 하는데, 예를 들어보면 100개의 정보를 저장할 수 있는 정적 메모리 할당을 사용해서 프로그램을 만들면 , 10.. 더보기 c언어 구조체 프로젝트 struct project - 나도코딩 유튜브 나도코딩 c언어 기초 강의 내용이 포함되었습니다. #include #include // 5마리의 고양이가 있다 // 아무키나 눌러서 랜덤으로 고양이를 뽑되 // 5마리 모두 다 수집을 해서 열심히 키우면 되는 게임 ! // 중복발생가능 !! // 고양이 // 이름 나이 성격 키우기난이도(레벨) typedef struct { char* name; int age; char* character; int level; }cat; // 현재까지 보유한 고양이 int collection[5] = { 0, }; // 전체 고양이 리스트 cat cats[5]; void initcats(); void printcat(int selected); int main(void) { srand(time(NULL)); init.. 더보기 c언어 구조체 struct 구조체 포인터 struct pointer - 나도코딩 유튜브 나도코딩 c언어 기초 강의 내용이 포함되어있습니다. 구조체란 한 개 이상의 변수를 묶어 그룹화시키는 사용자 정의 자료형이다. 똑같은 변수를 여러번 사용해야 하는 경우에 효과적으로 사용할 수 있다. 여러개의 변수를 하나로 묶어서 관리할 수 있게 되고, 그룹화할 때 같은 자료형을 가진 변수들을 묶거나, 서로 다른 자료형을 가진 변수들을 묶어서 그룹화할 수도 있다. #include struct GameInfo { char* name; int year; int price; char* company; }; // }구조체별칭; int main(void) { // 구조체 사용 struct GameInfo gameinfo1; gameinfo1.name = "나도게임"; gameinfo1.year = 2017; .. 더보기 c언어 다차원배열 multidimensional array 프로젝트 카드뒤집기게임 - 나도코딩 #include #include // 10마리의 서로 다른 동물 (각 카드 2장씩) // 사용자로부터 2개의 입력값을 받아서 같은 동물 찾으면 카드 뒤집기 // 모든 동물 쌍을 찾으면 게임 종료 // 총 실패 횟수 알려주기 int arrayAnimal[4][5]; // 카드 지도 (20장의 카드) void initAnimalArray(); char* strAnimal[10]; // 10개의 공간을 만들고, 공간에 들어갈 데이터는 주소 void shuffleAnimal(); void initAnimalName(); int getEmptyPosition(); int conv_pos_x(int x); int conv_pos_y(int y); void printAnimal(); void printQuestion.. 더보기 c언어 다차원배열 multidimensional array - 나도코딩 유튜브 나도코딩 c언어 기초 강의 내용입니다. 지난번에도 배열을 배웠었는데 그 배열은 1차원 배열이다. 이번 글은 다차원배열에 대한 글이다. 배열은 같은 형태의 데이터를 반복해서 처리할 때 쉽고 빠르게 하기 위해서 메모리에 연속적으로 저장공간을 만드는 것인데, 다차원배열 또한 크게 다르지 않다. int main(void) { int arr[5]; int arr2[2][5]; int arr3[4][2]; int arr4[3][3][3]; return 0; } int arr[5]; □□□□□ 이렇게 연속으로 공간이 5개 생김 int arr2[2][5]; □□□□□ arr2[0][0] arr2[0][1] arr2[0][2] arr2[0][3] arr2[0][4] □□□□□ arr2[1][0] arr2[1][1.. 더보기 c언어 포인터, pointer 프로젝트, 물고기 키우기 - 나도코딩 물고기들이 어항에 있고 어항의 물은 일정 시간마다 계속 줄어든다. 물고기를 선택하면 물이 조금씩 차는데 시간이 지날 수록 물이 줄어드는 속도는 빨라진다. 어항들의 물이 모두 사라지지 않도록 물고기들을 최대한 빨리 선택해라 #include #include int level; int arrayFish[6]; int *cursor; void initData(); void printfFishes(); void decreaseWater(long elapsedTime); //int checkFishAlive(); int main_6_2project(void) { long startTime = 0; // 게임 시작 시간 long totalElapsedTIme = 0; // 총 경과 시간 long prevElapsed.. 더보기 c언어 pointer, 포인터, swap - 나도코딩 유튜브 나도코딩 c언어 기초 강의내용이 포함되어 있습니다. int a = 10; int b = 20; 에서 a와 b의 값을 바꾸고 싶으면 어떻게 해야할까 swap함수를 구현해보자. #include void swap(int a, int b); int main(void) { int a = 10; int b = 20; swap(a,b); printf("a = %d, b = %d", a, b); return 0; } void swap(int a, int b) { int temp = a; a = b; b = temp; } 양손에 사과를 들고 있는데 그 사과 둘을 서로 바꿀 수 없는 것처럼 a와 b를 바꿀 때도 그렇다. 그래서 temp라는 임시변수를 선언해서 a와 b를 바꿔주었다. 이 코드를 실행시켜보면 a와 b는.. 더보기 c언어 포인터 pointer - 나도코딩 유튜브 나도코딩 c언어 기초 강의 내용입니다. 포인터 : 주소값을 저장하는 변수 메모리에서 주소는 숫자이므로 포인터 변수는 그냥 숫자가 들어가는 정수 변수일 뿐이다. 숫자가 주소일 뿐 단순하다. 포인터 변수 앞에 ' * ' 연산자가 붙고, 그 변수가 가지고 있는 정수값을 주소로 생각하면 된다. ' * '는 포인터를 선언하겠다는 의미와, 해당포인터가 가리키는 값을 가져온다는 의미를 가지고 ' & '는 ' * '와 반대방향으로, 그 변수가 가리키던 주소의 위치를 받겠다는 의미를 가진다. · 포인터 변수 선언 : int *ptr · 포인터 변수에 주소 저장 : ptr = &a · 포인터 변수 주소가 가리키는 메모리의 값 : *ptr; int a = 1; // int *ptr; ptr = &a; printf(".. 더보기 이전 1 2 다음