러닝센터5강 전체 코드

===레퍼런스===============================================
#include <iostream> // 콘솔 입출력
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>

using namespace std;

class Monster{
public:
int hp;
int damage;
int level;
};


// main에서 생성한 monster1, monster2의 데미지를 업그레이드 해줌

void MonsterDamageUp(Monster& monster1, Monster& monster2) {
// (&main().monster1.damage).damage += 20;
//monster1->damage += 20; // (*monster1).hp += 20;
monster1.damage += 20;
monster2.damage += 20;
}




void main() {

// 몬스터 1 생성
Monster monster1;
monster1.hp = 100;
monster1.damage = 20;
monster1.level = 30;

// 몬스터2 생성
Monster monster2;
monster2.hp = 80;
monster2.damage = 10;
monster2.level = 3;

cout << "Monster1 데미지 : " << monster1.damage << endl;
cout << "Monster2 데미지  : " << monster2.damage << endl;

// 몬스터의 데미지를 업해주는 함수 호출
MonsterDamageUp(monster1, monster2);

cout << "Monster1의 데미지 업 : " << monster1.damage << endl;
cout << "Monster2의 데미지 업 : " << monster2.damage << endl;

}






void sw(Monster& object1, Monster& object2){ // 레퍼런스 참조 
Monster temp = object1; // & 레퍼런스 참조 이므로 메모리 주소 타입을 참조 하지 않는다.
object1 = object2;
object2 = temp;
}


void main() {

Monster mon1; // 객체생성
Monster mon2; // 객체생성

mon1.hp = 100;
mon2.hp = 200;

cout << mon1.hp << endl;
cout << mon2.hp << endl;
sw(mon1, mon2);

cout << mon1.hp << endl;
cout << mon2.hp << endl;


}




================================================


#include <iostream> // 콘솔 입출력
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>

using namespace std;

// 포인터를 사용한 배열의 참조
void printArr1(int* arr){
cout << "main().arr  의 값" << arr << endl;
for (int i = 0; i < 5; i++){
cout << i + 1 << "번째 값 출력" << arr[i] << endl;
}
}

// 레퍼런스를 이용한 배열의 참조
void printArr2(int arr[5]){
cout << "main().arr  의 값" << arr << endl;
for (int i = 0; i < 5; i++){
cout << i + 1 << "번째 값 출력" << arr[i] << endl;
}
}

// 레퍼런스를 이용한 배열의 참조1
void printArr2(int arr[]){
cout << "main().arr  의 값" << arr << endl;
for (int i = 0; i < 5; i++){
cout << i + 1 << "번째 값 출력" << arr[i] << endl;
}
}

void main() {

//  arr => 배열명 => 상수 => 배열의 시작 주소값
int arr[5] = { 0,1,2,3,4 };

cout << "arr : " << arr << endl;
cout << "&arr[0] : " << &arr[0] << endl;

//  arr  주소에 1을 더하면 하나의 자료형 크기를(int) 지정함
cout << "arr + 1 : " << arr + 1 << endl;
cout << "&arr[1] : " << &arr[1] << endl;
cout << "arr + 2 : " << arr + 2 << endl;
cout << "&arr[2] : " << &arr[2] << endl;

//arr[3] 의 실제 값을 출력
cout << "*(arr + 3) : " << *(arr + 3) << endl;
cout << "*(&arr[3]) : " << *(&arr[3]) << endl;
cout << "arr[3] : " << arr[3] << endl;

printArr1(arr);

printArr2(arr);
for (int i = 0; i < 5; i++){
cout << i + 1 << "번째 값을 입력";
cin >> arr[i];
}


}


=====================================================

#include <iostream> // 콘솔 입출력
#include <stdlib.h> // 랜덤 모듈
#include <time.h> // 타임 추출
#include <string>
#include <CoreWindow.h>

using namespace std;

// 포인터를 사용한 배열의 참조
void printArr1(int* arr, int size){
cout << "main().arr  의 값" << arr << endl;
for (int i = 0; i < size; i++){
cout << i + 1 << "번째 값 출력" << arr[size] << endl;
}
}
// 레퍼런스를 이용한 배열의 참조

void inputArr(int arr[], int size){
for (int i = 0; i < size; i++){
cout << i + 1 << "번째 값을 입력";
cin >> arr[size];
}
}

void main() {

int size = 0;
cout << "할당크기를 정하세요"; cin >> size;

// 원하는 크기를 유저가 원할때 동적으로 할당하는 방법을 동적 할당이라고 한다.
// 동적 할당은 new 키워드를 사용한다.
// 동적 할당 문법 : 자료형 * 포인터변수 = new 자료형[크기];
// 동적할당시에는 자동 변수 공간이 아는 힙 메모리 공간을 사용한다.
// 힙 메모리 공간은 반드시 사용자가 해제 해줘야 한다.
// 힙 메모리 공간을 해제 하지 않으면 메모리 누수가 발생할 수 있다.
// 물론 게임 종료될때는 모두 해제 된다.

// int arr[size]; => 자동 변수 공간의 크기는 컴파일 이전에 결정되어야 한다.
int* arr = new int[size]; // int arr[5]; 와의 차이점은 로컬과 힙메모리 , 동적할당. 
// int arr[5];

inputArr(arr,size); // 함수 실행
printArr1(arr,size);// 함수 실행 
delete[] arr;

}


=================================================================

#include <iostream>
#include <stdlib.h>
#include <string>
#include <time.h>
  
using namespace std;
  
// 포인터를 사용한 배열의 참조
void PrintArr1(int* arr, int size)
{
    cout << "main().arr의 값 : " << arr << endl;
    for (int i = 0; i < size; i++) {
        cout << i + 1 << "번째 값 출력 <<< " << *(arr + i) << endl;
    }
}
  
// 레퍼런스를 이용한 배열의 참조1
void PrintArr2(int arr[], int size)
{
    cout << "main().arr의 값 : " << arr << endl;
    for (int i = 0; i < size; i++) {
        cout << i + 1 << "번째 값 출력 <<< " << arr[i] << endl;
    }
}
  
// 레퍼런스를 이용한 배열의 참조2
void PrintArr3(int arr[5], int size)
{
    cout << "main().arr의 값 : " << arr << endl;
    for (int i = 0; i < size; i++) {
        cout << i + 1 << "번째 값 출력 <<< " << arr[i] << endl;
    }
}
  
void InputArr(int arr[], int size) {
  
    for (int i = 0; i < size; i++) {
  
        cout << i + 1 << "번째 값 입력 >>> "; cin >> arr[i]; // *(arr + i)
  
    }
}
  
void main() {
  
    int size = 0;
    cout << "할당 크기를 정하세요 >>> "; cin >> size;
  
    // 원하는 크기를 유저가 원할때 동적으로 할당하는 방법을 동적 할당이라고 한다.
    // 동적 할당은 new 키워드를 사용한다.
    // 동정 할당 문법 : 자료형* 포인터변수 = new 자료형[크기];
    // 동적할당시에는 자동변수 공간이 아닌 힙 메모리 공간을 사용한다.
    // 힙 메모리 공간은 반드시 사용자가 해제 해줘야 한다.
    // 힙 메모리 공간을 해제 하지 않으면 메모리 누수가 발생할 수 있다.
    // 물론 게임 종료될때는 모두 해제 된다.
  
    // int arr[size]; => 자동 변수 공간의 크기는 컴파일 이전에 결정되어야 한다.
    int* arr = new int[size];
    // int arr[5];
  
    InputArr(arr, size);
    PrintArr1(arr, size);
  
    delete[] arr;
}


댓글

이 블로그의 인기 게시물

날짜 시간 시간차 시간 계산 하기

코루틴에서 CallBack 함수 적용하기

C++ 언어 퍼센트 구하는 방법 / 기본 언어 퍼센트 구하는 방법