728x90

리메이크 중/C,C++ 이론 중심 25

C(&C++) 이론 20. 동적 할당

내용 참고 C++ 기초플러스 4판 (성안당) 혼자 연구하는 C/C++ (Soen.kr/와우북스) 동적 할당 ■ 동적 할당이란 프로그래밍 시점에서는 메모리가 얼마나 필요한지 알 수 없어 실행 중에 메모리를 할당하는 것을 말한다. ■ 예를 들어 주소록을 저장하는 배열을 만들어야 하는데, 몇명이나 저장해야 할지 모를 때 동적할당을 사용한다. ■ 동적할당 대신에 충분히 큰 배열을 만들어 놓으면 대처할 수는 있겠지만 이 경우에는 메모리 낭비가 극심할 것이다. ■ C언어에서는 동적할당을 위해서 malloc()과 free()라는 함수를 사용했다. ■ C++에서는 언어에서 지원하는 new와 delete라는 전용 연산자를 사용한다. ■ C++의 명령어가 더 사용이 편하고 직관적이기 때문에 주로 C++의 방법이 사용된다...

C(&C++) 이론 19. 이중 포인터

내용 참고 혼자 연구하는 C/C++ (Soen.kr/와우북스) 이중 포인터 ■ 이중 포인터란 포인터를 가리키는 포인터라는 의미이다. ■ int** ppi; 라고 쓰면 이중 포인터가 되고, int*** pppi; 라고 쓰면 3중 포인터가 될 것이다. ■ 원한다면 10중 포인터나 그 이상도 만들 수 있지만 3중 포인터 이상은 딱히 의미가 없다. ■ T형 타입에 대한 T형 포인터를 만들 수 있다. ■ T형 포인터는 하나의 타입으로 인정된다. ■ 즉, T형 포인터에 대한 포인터를 만들 수 있다. ■ 이런식으로 사용할 수 있다. #include using namespace std; int main() { int i = 1234; int* pi = &i; int** ppi = π cout

C(&C++) 이론 18. 포인터 응용

내용 참고 혼자 연구하는 C/C++ (Soen.kr/와우북스) 포인터 응용 ■ 포인터의 기본 개념은 단순한 만큼 파생될 수 있는 내용이 많다. ■ 특히 포인터와 메모리에 대한 내용과 이중 포인터, 포인터 배열, 배열 포인터, 함수 포인터 등이 중요하다. ■ 여기서는 *ptr++ 표현에 대한 내용과 void형 포인터에 대한 내용을 담았다. Ⅰ. *ptr++ ■ 처음보면 당황스러울 수 있는 표현이다. 차근차근 분석해보자. ⅰ. 예제 #include using namespace std; int main() { int ar[] = {1,2,3,4,5}; int arMAX = sizeof(ar)/sizeof(ar[0]); //배열의 이름은 상수 포인터로 배열의 첫번째 요소를 가리키지만, //sizeof() 연산자..

C(&C++) 이론 17. 포인터 1

내용 참고 C++ 기초플러스 4판 (성안당) 혼자 연구하는 C/C++ (Soen.kr/와우북스) Microsoft Docs (구 MSDN) 포인터 ■ 포인터란 컴퓨터의 메모리 주소에 직접 접근하여 데이터를 처리할 수 있는 문법이다. ■ 메모리에 직접 접근하기 때문에 사용자의 부주의로 인한 에러가 일어나기 쉬우니 조심해야 한다. Ⅰ. 포인터의 정의 ⅰ. T형 포인터 ■ 임의의 자료형인 T형 자료형을 저장하고 있는 메모리의 주소를 나타내는 포인터를 T형 포인터라고 한다. ■ 예를들어 int값을 저장하고 있는 메모리를 나타내는 주소를 저장한 포인터는 int형 포인터라고 한다. ■ 임의의 T형 변수가 있다면 언제나 임의의 T형에 대한 포인터도 선언할 수 있다. ■ 포인터 변수를 선언할 때 사용하는 연산자는 * ..

C(&C++) 이론 16. 배열

내용 참고 YES C (정보공학연구소/생능출판사) 혼자 연구하는 C/C++ (Soen.kr/와우북스) Microsoft Docs (구 MSDN) 배열(Array) ■ 배열은 동일한 타입을 갖는 유한개의 변수들을 한 가지 이름으로 묶어서 메모리에 순서대로 저장해 놓은 것이다. ■ 배열 내의 변수에 순서대로 접근하기 위한 숫자를 인덱스(Index)라고 부른다. ■ 인덱스가 n개라면 n차원 배열이라고 한다. ■ 예를들어 arr[10][10][10]은 인덱스가 3개이므로 3차원 배열이라고 한다. Ⅰ. 배열의 선언 ⅰ. 배열의 길이 ■ 배열을 선언할 때는 반드시 배열의 길이를 명시적으로 설정해야한다. ■ 배열의 길이는 변수로 정할 수 없으며, 반드시 상수 혹은 상수 표현식(constexpr)으로 지정해야한다. ■..

C(&C++) 이론 15. 함수

내용 참고 YES C (정보공학연구소/생능출판사) 혼자 연구하는 C/C++ (Soen.kr/와우북스) Microsoft Docs (구 MSDN) 함수 Ⅰ. 프로그래밍에서의 함수 ⅰ. 절차지향 프로그램에서 함수의 의의 ■ 함수란 C로 만들어진 프로그램에서 프로그램을 구성하는 단위이다. ■ 이는 C언어가 기본적으로 절차지향 프로그래밍 방법론에 따라 설계되었기 때문이다. ◆ 절차지향 프로그래밍 (Procedual Oriented Programming) ■ 절차치향 프로그래밍에서는 분할정복전략으로 문제를 해결한다. ◆ 분할 정복 전략 (Divide and Conquer) ■ 분할정복전략이란 큰 문제를 여러개의 작은 문제로 나눠서 해결하는 문제 해결 전략이다. ■ C 프로그램은 주로 함수라는 기능별 문제 해결 단..

C(&C++) 이론 14. 제어구조 / 강제 분기문

내용 참고 YES C (정보공학연구소/생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Microsoft Docs (구 MSDN) 강제 분기문 ■ 이 포스트에서는 조건문과 반복문 외에 프로그램의 흐름을 제어하는 분기문들을 알아본다. Ⅰ. 강제 분기문(Jump Statement) ⅰ. goto문 ■ 구문 : goto identifier; ■ 같은 함수 내에 지정된 식별자로 표시된 labeled문으로 이동한다. ■ goto문은 같은 함수 내의 어떤 위치로든 조건없이 이동시켜주는 매우 강력한 명령어이다. ■ 이러한 강력함 때문에 goto문을 남용할 경우 코드의 가독성이 매우 떨어질 수 있다. ■ C언어와 같이 구조적 프로그래밍 언어에서는 goto문 사용을 지양하고 조건문이나 반복문 등으로 구조..

C(&C++) 이론 13. 제어구조 / 조건문과 반복문

내용 참고 YES C (정보공학연구소/생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Microsoft Docs (구 MSDN) 조건문과 반복문 ■ 제어문의 대상이 되는 목표 문장이 한 문장일때는 블록을 쓰지 않아도 의도한대로 동작한다. ■ 하지만 확장성과 가독성 그리고 실수를 방지하기 위해서 목표 문장이 한 문장이더라도 블록으로 묶는 것을 추천한다. Ⅰ. 조건문(Alternative Statement) ⅰ. if문 ■ 구문 : if ( test_expression ) statement; ■ 조건식의 값이 참일 때만 목표 문장을 실행한다. ⅱ. if-else문 ■ 구문 : if ( test_expression ) statement1; else statement2; ■ 조건식의 값이 참이..

C(&C++) 이론 12. 문장과 제어구조

내용 참고 YES C (정보공학연구소/생능출판사) 혼자 연구하는 C/C++ (SoEn.kr /와우북스) Microsoft Docs (구 MSDN) 문장과 제어구조 Ⅰ. 문장(Statement), 수식(Expression), 블록(Block) ⅰ. Statement(문장 or 문) ■ 꼭 C언어가 아니더라도 대부분의 프로그래밍 언어는 한 문장(Statement)씩 실행된다. ■ 프로그래밍 언어에서 문장(Statement)이란 독립적으로 실행가능한 최소한의 코드 조각을 의미한다. ■ C언어의 문장은 대부분 ;(세미콜론)으로 끝나지만 키워드로 시작되는 제어문 등은 ;(세미콜론)으로 끝나지 않는 경우도 있다. ⅱ. Expression(수식 or 식) ■ 수식은 상수와 변수, 연산자 등의 조합으로 그 결과 하나의..

C(&C++) 이론 11. 연산자 우선순위 및 결합 방향 표

내용 참고 C++ 기초 플러스 4판 (Stephen Prata저, 윤성일역 / 성안당) Microsoft docs (구MSDN) C언어 이론 5 / 연산자 우선순위 표 연산자 우선순위와 결합 방향에 관한 표는 대부분의 C++ 교재에서 제공된다. 이를 외우고 있으면 유리하겠지만 굳이 C 및 C++을 공부할 때 처음부터 연산자 우선순위를 외우려고 할 필요는 없다. 왜냐하면 연산자 우선순위라는 것은 쓰다보면 결국 익숙해지고 외워지는 내용이기 때문이다. 본 포스트에서는 연산자의 형식과 우선순위, 결합 방향, 오버로딩 가능 여부를 중심으로 표시하는데 중심을 두었다. 각 연산자에 대한 자세한 설명은 이후에 관련 주제와 함께 설명할 예정이다. Ⅰ. 연산자 우선순위와 결합 방향의 의미 ⅰ. 연산자 우선순위 ■ 문장 안..

반응형