전체 글846 재귀 함수 재귀는 자료구조와 알고리즘에 있어서 매우 중요한 요소이다. 재귛마수란 함수 내에서 자기 자신을 다시 호출하는 함수를 의미한다. void Recursive(){ printf("Recursive call!\n"); Recursive(); //나 자신을 재호출 } 완료되지 않은 함수를 다시 호출하는 것이 가능하다. Recursive함수가 내부적으로 다시 호출이되면 복사본이 생긴다. 즉 함수가 호출되면 해당 함수의 복사본을 만들어서 실행하는 구조이다. Recursive함수를 실행하는 중간에 다시 Recursive함수가 호출되면, Recursive함수의 복사본을 하나 더 만들어서 복사본을 실행하게 된다. 실제로 함수를 구성하는 명령문은 CPU로 이동이 되어서(복사가 되어서) 실행이 된다. 그런데 이 명령문은 얼마.. 2021. 2. 5. 구조체 구조체(structure)라는 것은 하나 이상의 변수(포인터 변수와 배열 포함)를 묶어서 새로운 자료형으로 정의하는 도구이다. 예를 들어보자. 마우스의 좌표정보를 저장하고 관리한다고 가정하면, int xpos; //마우스의 x좌표 int ypos; //마우스의 y좌표 이둘은 함께하기 때문에, 즉 독립된 정보를 표현하는 것이 아닌, 마우스의 위치라는 하나의 정보를 표현한다. 결국 마우스의 현재 위치 정보를 출력하기 위해서는 저 위에 두변수에 저장된 값을 동시에 참조해야한다. 또한 동시에 갱신되어야 한다 . 그리고 둘중 하나라도 소멸이 된다면 나머지 하나는 의미없는 변수가 되어버린다. 결국 이둘의 변수를 묶기 위해 구조체를 사용한다. struct point { int xpos; int ypos; }; 위의 .. 2021. 2. 4. 자료구조와 알고리즘 이해 자료구조 : 데이터의 표현 및 저장방법 선형구조 : 리스트, 스택 큐 비선형구조 : 트리, 그래프 파일구조 : 순차파일, 색인파일, 직접파일 단순구조 : 정수, 실수, 문자, 문자열 알고리즘 : 표현 및 저장된 데이터를 대상으로 하는 문제의 해결 방법 예를 들면 int arr[10] {1, 2, ...}; //초기화되었다고 가정 for(idx= 0; idx 2021. 2. 3. 문자열 입력 함수 헤더파일 string.h에 선언된 문자열 관련 함수를 설명한다. size_t = unsigned int 이다. 즉 부호없는 정수이다. size_t strlen(const char *a); ->전달된 문자열의 길이를 반환하되, 널 문자는 길이에 포함하지 않음 #include #include void Remove(char* str) { int len = strlen(str); //널문자는 길이에 포함하지않음 만약 good가 입력한다고 가정 //g o o d \n 0 이 저장되어있는것인데 , 널길이를 포함하지않기 때문에 5가반환 str[len - 1] = 0; //널문자는 길이에 //str[5-1] = 0; 은 str[4] 즉 인덱스값기준으로 4에 있는 것 \n을 제거하는 것 } int main(){ char.. 2021. 2. 2. 문자와 문자열 데이터의 입력과 출력은 프로그램의 흐름을 뜻하는 것이다. 프로그램을 중심으로 프로그램 안으로 데이터가 흘러들어오는 것이 입력이고 프로그램 밖으로 데이터가 흘러 나가는 것이 출력이다. 대표적인 입력장치로 키보드가 있으며, 파일도 입력의 대상이 될 수 있다. 대표적인 출력장치로 모니터가 있으며, 파일 역시 출력의 대상이 될 수 있다. 모니터와 키보드는 연결되어있는 개체가 아닌, 서로 떨어져 있는 개체이다. 따라서 프로그램 상에서 모니터와 키보드를 대상으로 입출력하기 위해서는 이들을 연결시켜주는 다리가 필요하다. 그리고 이러한 다리의 역할을 하는 매개체를 가리켜 '스트림(Stream)'이라 한다. 스트림은 출력 스트림과 입력스트림으로 나눠져 있다. 콘솔(키보드 와 모니터) 입출력과 파일 입출력 사이에는 차이점.. 2021. 2. 1. 함수 포인터, void 포인터 함수도 주소 값을 가지고 있는데 , 이 주소값을 저장하는 변수를 함수 포인터라고 한다. 배열의 이름이 배열의 시작주소 값을 의미한다. 또한 함수의 이름도 함수가 저장된 메모리 공간의 주소 값을 의미한다. 함수의 이름은 상수의 형태인데, 이러한 함수의 주소 값 저장을 위한 포인터 변수를 별도로 선언을 할 수 있다. int Func(int num) {... }; 만약 위와 같이 함수가 선언되었다고 가정하면.. 반환형 : int 매개변수 : int num 그리고 위의 함수의 이름 Func는 Func의 함수의 주소 값을 의미하는 상수형태의 함수 포인터가 된다. Func의 형(type)은 반환형과 매개변수의 선언형태를 기준으로 구분한다. int func1(int num1){..}; int func2(int num.. 2021. 1. 31. 이전 1 ··· 135 136 137 138 139 140 141 다음