티스토리 뷰
동적 메모리
동적 메모리는 이름이 없다
전역 변수를 사용하면 안된다
기본 형태
데이터 타입 *함수 이름 = new 데이터 타입
ex) int *p = new int;
C 스타일 : ((int *)malloc(sizeof(int));
C++ 스타일 Example)
선언 : int *p;
p = new int;
p1 = new int[3]; // 배열
해제 : delete p;
delete p1; // p1이 가리키는 주소만 지움 -> 다 지우는게 아님
delete [ ]p1; // 다 지움 - 배열
삭제하기 전까지는 p의 위치를 바꿔서는 안된다
#동적 메모리를 할당 할때, 소멸자가 하나밖에 없기 때문에 크기가 하나라도 배열로 선언한다
ex) int *p = new int[1];
동적 메모리 - 성적 처리
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
using namespace std;
//동적 메모리 - 성적처리
//국어 영어 수학
void input(int *p, char *n);
void op(int *p, float *avg);
void output(int *p, char *n, float *avg);
void main() {
int *p = new int[4];
char *name = new char[10];
float *avg = new float;
input(p, name);
op(p, avg);
cout << endl;
output(p, name, avg);
delete[] p;
delete[] name;
delete avg;
}
void input(int *p, char *n) {
cout << "이름 입력 : ";
cin >> n;
cout << "점수 입력 (국어 영어 수학) : ";
for (int i = 0; i < 3; i++) {
cin >> p[i];
}
}
void op(int *p, float *avg) {
p[3] = 0;
for (int i = 0; i < 3; i++) {
p[3] += p[i];
}
*avg = p[3] / 3.f;
}
void output(int *p, char *n, float *avg) {
cout << "이름 : " << *n << endl;
cout << "점수 : ";
for (int i = 0; i < 3; i++) {
cout << p[i] << " ";
}
cout << endl;
cout << "총점 : " << p[3] << endl;
cout << "평균 : " << *avg << endl;
}
'LANGUAGE > C++' 카테고리의 다른 글
[C++] OVERROADING (0) | 2018.03.06 |
---|---|
[C++] POINTER ARRAY - 포인터 배열 (1) | 2018.03.06 |
[C++] POINTER - 포인터 (0) | 2018.03.05 |
[C++] REFERENCE (0) | 2018.03.05 |
[C++] CALL BY (0) | 2018.03.05 |
댓글