본문 바로가기

분류 전체보기

(72)
[함수]-함수의 정의와 호출-함수 사용의 장점과 단점 #include using namespace std; int main() { double a[50], b[100]; ..... // 생략 - a와b에 각각 50개와 100개의 데이터 입력 double sum = 0, sqSum = 0; for (int i = 0; i < 50; i++) { sum += a[i]; sqSum += a[i] * a[i]; } cout
[함수]-함수의 정의와 호출-함수의 호출 함수를 호출할 때에는 함수의 이름과 함께 필요한 인수를 전달한다. functionName(aParameterList); varName = functionName(aParameterList); 형식1은 void형 함수나 반환된 값을 사용할 필요가 없을 때 사용한다. 형식2는 함수를 실행한 후 반환된 값을 사용하는 문장의 예이다. 여기에서는 지정된 변수에 함수가 반환하는 값을 넣는 것을 대표적으로 예시한 것이며, 함수를 수식에 직접 넣어 반환되는 값을 연산에 바로 사용할 수도 있다. aParameterList에는 함수에 전달할 인수를 나열한 것으로, 각각의 인수에 해당되는 상수, 변수, 수식 등을 실 매개변수(actual parameters)라고 한다. 다음 프로그램은 화씨온도를 섭씨온도로 환산하는 함수를 ..
[함수]-함수의 정의와 호출-함수의 정의 함수는 C++ 프로그램을 구성하는 기본 단위이다. 모든 프로그램은 최소한 1개의 함수로 구성된다. 함수란 필요한 작업을 수행하는 프로그램 문장들을 하나의 단위로 모아 놓고, 이에 이름을 부여한 것이다. 이렇게 정의하여 놓은 함수는 프로그램의 다른 부분에서 필요할 때 호출하여 사용할 수 있다. 함수를 호출할 때에는 함수가 필요로 하는 데이터 또는 객체를 인수로 전달하여야하며, 함수는 정의된 처리를 한 후 필요하면 그 결과를 호출한 문장으로 되돌려 준다. 프로그램을 고유한 기능을 수행하는 여러 개의 함수로 나누어 작성하는 것은 기존의 프로그래밍 기법에서 프로그램을 간결하고 유지, 보수하기 쉽도록 만들기 위해 흔히 사용되고 있다. 또한 반복적으로 사용되는 작업을 함수로 만들고, 필요한 곳에서 이를 호출하여 사..
참조 포인터와 유사한 개념을 지원하는 것으로 참조(reference)가 있다. 어떠한 변수에 대한 참조는 그 변수의 별명이라고 할 수 있다. 참조형은 ' & ' 기호를 이용하여 다음과 같은 형식으로 선언한다. TypeName &refVar = varName; 참조는 초기화를 통해 참조 대상을 지정해야 한다. 위의 형식에서 refVar를 varName으로 초기화한 것은 refVar에 varName의 값을 넣는 것이 아니라 refVar가 varName을 참조하도록 지정함으로써 앞으로 refVar를 사용하는 것이 varName을 사용하는 것과 동일한 결과를 내도록 하는 것이다. 다음의 예를 살펴보자. int a = 10;, b = 20; int &aRef = a; // aRef는 정수형 변수 a에 대한 참조 cout
메모리 할당 및 반환 동적 메모리 할당 ▶ 변수를 선언하면 그 변수에 대한 기억공간이 메모리의 적절한 위치에 할당된다. 일반적으로 변수는 함수 내부에 선언되어 함수가 실행되는 동안만 존재하거나, 프로그램 시작과 함께 생성되어 프로그램을 종료할 때 소멸된다. 함수 내부에서 선언되는 지역변수들은 대부분 전자에 해당되며, 함수의 외부에 선언되는 전역변수나 함수 내부에서 static 키워드와 함께 선언되는 변수는 후자에 해당된다. 그런데 때에 따라서는 필요할 때 기억공간을 할당하고 더 이상 그 공간이 필요하지 않으면 반환할 수 있어야 한다. 이와 같은 기능을 동적 메모리 할당(dynamic memory allocation)이라고 한다. 그런데 동적 메모리 할당으로 생성된 저장공간은 이름이 없어 변수처럼 그 이름을 통해 액세스할 수 ..
포인터 포인터의 사용 ▶ 포인터는 C 및 C++에서 매우 중요하다. 포인터(pointer)란 다른 변수, 구조체, 객체 등을 가리키는 변수로서 메모리의 주소와 직접적으로 연관된다. 포인터 변수는 다음과 같이 자료형 명칭에 *를 사용하여 선언한다. TypeName *ptrVar; ptrVar는 포인터 변수로서, TypeName형의 데이터를 가리킨다. 다음은 포인터를 사용하는 간단한 예이다. #include using namespace std; int main() { int a = 10; int* ptr; ptr = &a; // ptr에 a의 주소를 넣음 cout
배열 프로그램을 작성하다 보면 유사한 내용을 저정하는 여러 개의 변수를 하나의 단위로 묶어 처리하는 것이 편리할 때가 있다. 이러한 경우 유용하게 사용할 수 있는 것이 배열(array)이다. 배열은 동일한 자료형의 값을 저장할 수 있는 공간을 여러 개 묶어 하나의 이름을 갖는 변수로 만들고, 각각의 원소를 첨자로 지정하는 것이다. 배열을 구성하는 원소의 자료형은 char, int 등과 같은 기본 자료형이나 구조체, 클래스 등 어느 것이어도 상관없다. 1차원 배열 ▶ n개의 원소를 저장하는 1차원 배열의 선언문은 다음과 같다. TypeName arrName[n]; 예를 들어 다음 문장은 float형의 값을 4개 저장할 수 있는 배열 fArray를 선언한 것이다. float fArray[3]; 이때 각각 이 문장..
클래스 C언어의 구조체(struct)는 프로그램으로 표현하고자 하는 대상에 대한 데이터의 구조만을 정의하고 있다. 그런데 이러한 대상은 데이터만으로 존재하는 것이 아니라 그 대상에 대해 행할 수 있는 여러 가지 동작이 함께 존재한다. C++ 언어의 클래스(class)는 표현하고자 하는 대상의 데이터와 함께 이에 대해 필요한 여러 가지 동작을 나타내는 함수들을 묶어 놓은 것이다. 클래스에서는 외부에 공개할 필요가 없는 것과 공개할 것을 구분한다. 보통 구현을 위한 세부 사항에 대한 것은 공개할 필요가 없으며, 클래스의 객체를 사용하는 데 필요한 함수들을 공개하여 그 함수를 통해서만 객체를 사용할 수 있도록 하는 것이 일반적이다. 앞서 작성한 구조체를 사용하여 원을 구하는 코드를 클래스를 이용하여 다시 작성해 보기..