예제
2. 함수의 선언은 다음과 같습니다. 이 함수를 가리킬 수 있는 포인터 변수를 선언 및 초기화 하세요.
main.cpp
Year.h
Year.cpp
main.cpp
인터럽트 제어기(AIC:Advanced Interrupt Controller)
인터럽트 제어기와 관련된 I/O 제어 레지스터
1. 다음 배열을 가리킬 수 있는 포인터 변수를 선언 및 초기화
하세요.
#include <iostream>
using namespace std;
int main()
{
int C[9];
int *pC = C;
char B[20];
char *pB = B;
double A[10][10];
double (*pA)[10] = A;
int D[5][7];
int (*pD)[7] = D;
char E[4][5];
char (*pE)[5] = E;
return 0;
}
2. 함수의 선언은 다음과 같습니다. 이 함수를 가리킬 수 있는 포인터 변수를 선언 및 초기화 하세요.
#include <iostream>
using namespace std;
char IntToChar(int num)
{
cout << "IntToChar " << num << endl;
return 0;
}
void MaxNum(int N1, int N2)
{
cout << "MaxNum " << N1 << N2 << endl;
}
int OutputIDnum(char *name, int pwd)
{
cout << "OutputIDnum " << name << pwd << endl;
return 0;
}
int main()
{
// 함수 포인터 선언 및 초기화
char (*fp1)(int) = IntToChar;
void (*fp2)(int, int) = MaxNum;
int (*fp3)(char *, int) = OutputIDnum;
// 함수 포인터를 이용하여 호출
(*fp1)(1);
(*fp2)(1, 1);
(*fp3)("test", 1);
return 0;
}
3. 클래스 멤버 함수를 가리킬 수 있는 포인터 변수를 선언
및 초기화를 하세요.
(클래스 외부에서 포인터 선언한다고 가정)
#ifndef POINT_H
#define POINT_H
// Point 클래수를 정의한다
class Point
{
public:
// 멤버 함수
void Print() const;
void Offset(int x_delta, int y_delta);
void Offset(const Point& pt);
// 생성자들
Point();
Point(int initialX, int initialY);
Point(const Point& pt);
// 소멸자
~Point();
// 접근자
void SetX(int value);
void SetY(int value);
int GetX() const
{
return x;
}
int GetY() const
{
return y;
}
private:
// 멤버 변수
int x, y;
};
#endif
main.cpp
#include "Point.h"
#include <iostream>
using namespace std;
int main()
{
Point p(100, 100);
// 멤버 함수 선언 및 초기화
void (Point::*fp1)(int) = &Point::SetX;
void (Point::*fp2)(int) = &Point::SetY;
int (Point::*fp3)(void) const = &Point::GetX;
int (Point::*fp4)(void) const = &Point::GetY;
void (Point::*fp5)(void) const = &Point::Print;
// 멤버 함수 호출
(p.*fp5)();
(p.*fp1)(50);
(p.*fp2)(50);
(p.*fp5)();
return 0;
}
4. 사용자에게 년도를 입력 받아 윤년인지 아닌지를 판단하는
판단하는 프로그램을 작성하시오.
윤년은 아래와 같다.
l
4로 나누어 떨어지는 해이다.
l
그 중에서 100으로 나누어 떨어지는 해는
평년
l
다만 400으로 나누어 떨어지는 해는 다시
윤년
Year.h
#ifndef YEAR_H
#define YEAR_H
class Year
{
public:
// 생성자
Year();
Year(int y);
// 멤버 함수
void setYear(int y);
int getYear() const;
bool isLeapYear() const;
protected:
int years;
};
#endif
Year.cpp
#include "Year.h"
void Year::setYear(int y)
{
years = y;
}
int Year::getYear() const
{
return years;
}
// 윤년인지 여부를 알려주는 함수(return value 1 이면 윤년)
bool Year::isLeapYear() const
{
if(years % 4 == 0)
{
if(years % 400 == 0)
{
return 1;
}
else if(years % 100 != 0)
{
return 1;
}
}
return 0;
}
// 디폴트 생성자
Year::Year()
{
setYear(0);
}
// 인자가 있는 생성자
Year::Year(int y)
{
setYear(y);
}
main.cpp
#include "Year.h"
#include <iostream>
using namespace std;
int main()
{
int y;
cout << "Input Year: ";
cin >> y;
Year cy(y);
if(cy.isLeapYear())
{
cout << "[" << cy.getYear() << "] is leap year" << endl;
}
else
{
cout << "[" << cy.getYear() << "] is common year" << endl;
}
return 0;
}
인터럽트 제어기(AIC:Advanced Interrupt Controller)
인터럽트 제어기와 관련된 I/O 제어 레지스터