더블포인트
int *A= new int[2]를 하면 heap영역에 메모리 두 자리를 만든다. *A는 heap영역을 가르키는 것이고 [2]이므로 두 자리의 메모리를 만든다.
nt **A= new int[2] 그런데 여기에 포인터를 하나 더 쓰면 스택영역에서 힙영역을 가르키고 또 힙영역에서 다른 힙영역을 가르키는 의미가 된다.
그래서 더블포인트를 선언한 후에 A[0] = new int[5];라 하면 힙 영역에서 다른 힙영역에 메모리 5자리를 만드는 것이고 new int[7]이라고 하면 heap영역에서 다른 힙영역에 7자리 메모리를 만드는 것이다.
1. 크기가 5 x 7 인 int 동적 배열을 생성한 다음, 0부터 순서대로 값을 저장하세요.
(c언어 타입도 작성하시오.)
#include <iostream>
using namespace std;
int main()
{
int a;
int b;
int i;
int c;
int x;
int y;
cout<<" (x)by(y) :";
cin>>x>>y; // x by y 입력받기
int **dp = new int*[x]; // (값을 저장할 배열의) 주소를 저장할 배열 동적 할당 (포인터를 // x개 만들겠다. 세로
for(i=0; i<x; i++)
{
dp[i] = new int[y]; //(값을 저장할 배열의)주소 입력, 값을 저장할 배열 동적 할당. 포인 //터에 해당하는 배열을 y개 만들겠다
}
for(a=0; a<x; a++)
{
for(b=0; b<y; b++)
{
dp[a][b] = a*y + b; //2차원 배열처럼 쓸 수 있다 - 출력값 입력
cout<<"dp ["<<a<<"]["<<b<<"] = " << dp[a][b]<<"\t";
if(b==(y-1)) //y숫자 맞춰줘서 끝나면 행건너뛰기.
{
cout<<"\n";
}
}
}
for(c=0; c<x; c++)
{
delete[] dp[c]; //값을 저장한 메모리 해제(해제할 때도 나중에 선언한 것 먼저 해제하 //고 그 다음에 처음 선언했던 것 해제하기.
}
delete[] dp; //주소를 저장한 메모리 해제
return 0;
}
2. 사용자가 입력한 크기만큼인 int 자료형 동적 배열을 생성해서 0부터 순서대로 채우세요. 사용자가 입력한 숫자가 100이라면, 0부터 99까지의 값을 배열에 저장합니다.
출력) 동적 배열크기 입력 : 10
[0] = 0
[1] = 1
[2] = 2
[3] = 3
[4] = 4
[5] = 5
[6] = 6
[7] = 7
[8] = 8
[9] = 9
#include <iostream>
using namespace std;
int main()
{
int a;
cout<<"동적 배열크기 입력 :";
cin>>a;
int*arr=new int[a];
for(int i=0;i<a;++i)
{
cout<<"["<<i<<"]"<<"="<<i<<"\n";
}
delete[] arr;
return 0;
}
3. 초 입력시 분과 초로 변환하는 프로그램을 작성하세요.
출력) Input Seconds : 100
Output : 1 min 40 sec
#include <iostream>
using namespace std;
int main()
{
int a;
cout << "Input seconds :";
cin >> a;
int b =(a/60);
if( a < 60)
{
cout << a << " min";
}
else if( a > 60)
{
//++b;
cout << b << " min" <<" "<< a-(b*60) <<" sec";
}
}
4. 입력된 정수의 2의 보수를 구하여 10진수, 16진수 형태로 출력하세요.
출력) Input Number : 1
2's complement(10진수) : -1
2's complement(16진수) : ffffffff
#include <iostream>
using namespace std;
int main()
{
int a;
cout << "Input Number :";
cin >> a;
int b = (~a)+1;
cout << "2's complement(10진수) : " << b << "\n";
cout << "2's complement(16진수) : " << hex<<b;
}
클레스는 변수 뿐만 아니라 함수까지도 포함할 수 있다.
함수가 들어간다는 것은 기능까지 들어갈 수 있다는 것이다.
구조체는 데이터만 들어갈 수 있다.(구조체는 자료형이 다른 변수의 모임.)
클레스에 비유할 수 있는 것이 붕어빵틀과 제품 설계도라면 객체는 붕어빵과 제품이다.
- 구조체
Struct A
{
int a;
int b;
}AA;
- 객체
main()
{
AA(자료형) BB(변수);
}
>>클래스를 사용하면 구조체 처럼 struct AA라고 struct를 달아줄 필요 없이 바로 클래스명 객체 이렇게 써주면 된다.
- 클래스 예시
Class A
{
int a;
int b;
} AA;
- 즉 AA가 클래스가 되고 BB(변수)는 객체가 되는 것이다.
'About 프로그래밍!!! > C++' 카테고리의 다른 글
[C++] 과제 4 객체로 작성하기.(과제 4-1) (0) | 2010.06.21 |
---|---|
[C++] 과제 4 객체로 작성하기. (0) | 2010.06.21 |
[C++]정적멤버 (0) | 2010.06.18 |
[C++]접근제어 (0) | 2010.06.17 |
문자 비트변환 후 켜진비트셈, 소수판별,로또번호 (0) | 2010.06.16 |