C++기초

C++기초

220322 - 포인터(Pointer)_2

#include int main() { /* 포인터 연산 : 덧셈, 뻴셈을 지원한다. 일반적인 사칙연산은 1을 더할 경우 단순하게 값이 1이 증가하게 되지만 포인터의 경우 1을 더하면 단순하게 1이 증가하는 개념이 아닌 해당 포인터 타임(int면 int, float 포인터 이면 float)의 메모리 크기만큼이 증가하게 된다. 즉, 2를 더하게 된다면 int포인터일 경우 int의 크기인 4바이트 * 2만큼 메모리주소의 값이 증가하게 되는 것이다. 배열의 index 접근 = 포인터 연산 */ int intArray[10] = {}; for (int i = 0; i < 10; ++i) { intArray[i] = i + 1; //Array = 배열의 시작 주소 } int* intpArray = intArray..

C++기초

220321(2) - 포인터(Pointer)

#include int main() { /* 포인터 : 메모리 주소를 저장하는 변수 타입이다. int, float 등 모든 변수 타입은 포인터 타입을 선언할 수 있다. 그래서 int변수의 주소는 int포인터 타입의 변수에 담을 수 있고 float변수의 주소는 float 포인터 타입의 변수에 담을 수 있다. 변수의 주소를 선언할때는 변수 앞에 & 을 붙여주면 해당 변수의 주소가 된다. 32비트 타겟의 프로그램은 메모리 주소가 16진수 8자리가 나오게 되고 64비트 타겟의 프로그램은 메모리 주소가 16진수 16자리가 나오게 된다. 즉, 포인터 변수는 메모리 주소를 저장하는 변수이므로 32비트 타겟에서는 4바이트가 되고, 64비트 타겟에서는 8바이트가 된다. *포인터 사용시 주의할 점: 이미 지워진 메모리를 ..

C++기초

220318 - 빙고 게임 만들기

////저번에 만든 빙고 게임에 AI를 추가해서 1:1 대전을 만들기. 이번에 추가한 주석은 // 두개를 추가하였음. #include #include ////AI의 난이도 설정 enum class AIType { None, Easy, Hard, Max //Easy와 Hard는 정상적인 값, None와 Max는 잘못 입력되었을때의 값. }; int main() { srand((unsigned int)time(0)); int Random = rand(); ////난이도 입력 받기 int AIState = 0; while (true) ////잘못 선택되었을 떄를 대비한 while문 { system("cls"); std::cout

C++기초

220317(2) - 로또 숫자 뽑기 프로그램

#include #include int main() { //만들기 전에: 스왑 알고리즘. //swap: Number1과 Number2의 값을 바꿔주기 int Number1 = 20; int Number2 = 30; //Number2 = Number1 를 해버리면 Number2의 값은 사라져버림. //그래서 중간 매개변수를 하나 만들어주어야 한다. int Temp = Number1; Number1 = Number2; Number2 = Temp; //1~45까지의 숫자가 있고, 이 숫자가 중복되면 안되게 //6개의 랜덤한 숫자를 얻어와야 한다. srand((unsigned int)time(0)); //시드 설정 int Random = rand(); //랜덤값 추출 /*std::cout

C++기초

220317(1) - 다차원 배열

#include int main() { //배열은 다차원 배열이 존재한다. 하지만 많이 사용하지는 않는다. int Array[10][5] = {}; int Array1[50] = {}; //길이가 5짜리인 배열이 10개가 만들어진다 -> 5 x 10 = 50 //10x5를 생성하나 50개짜리를 통으로 만드나 생성되는 메모리 구조는 똑같다. //그냥 사용의 편의성 때문에 만든 기능. Array[0][3] = 30; Array1[3] = 30; //둘이 구조상 같은 위치 Array1[6] = 100; Array[1][1] = 100; //나중에 포인터나 함수를 배우게 되면 이차원 배열보다 일차원 배열이 더 편하다. //Array[1][1] = Array1[1 * 5 + 1] 같은 식으로 할수 있기 때문에 r..

C++기초

22년 3월 16일(2) - array

#include int main() { //엄청나게 많은 변수를 만들어야 할 때 배열을 사용한다. /* 배열: 같은 타입의 변수 여러개를 한 번에 선언할 수 있는 기능. 배열은 연속된 메모리 공간에 만들어진다. 즉, 하나의 큰 메모리 공간을 할당하고 그 공간을 개수만큼 쪼개서 사용하게 된다. 개별 변수를 만들 때는 지금 당장 만들수 있는 빈 메모리에 공간을 할당하여 변수를 저장. 하지만 배열로 한 번에 여러 변수를 만들 떄는 한번에 선언한 만큼의 공간을 이어서 할당한다. *선언 방법 int Array[n]; */ /* 배열의 갯수를 10억개 이상을 할당하면 에러가 남. 배열의 최대 길이는 한계가 있다. 배열의 전체 크기는 0x7fffffff바이트를 초과할 수 없습니다. 0x7fffffff = 2,147,..

C++기초

22년 3월 16일(1) - 가위바위보 구현하기

#include #include enum class RSP { scissor = 1, rock, paper, exit }; //미니게임 - 가위바위보 int main() { srand((unsigned int)time(0)); int random = rand(); //1.어떤 변수타입을 통해 플레이어가 선택한 가위바위보를 저장할 것인가? //-->enum타입으로 해보자 while(true) { system("cls"); //매 판마다 결과를 삭제 std::cout

C++기초

22년 3월 15일(3) - random

#include #include //TIP)C언어 적부터 쓰이던건 .h가 붙는다. C++ 이후에 만들어진 건 안 붙음. int main() { /* srand: C++에서 제공하는 난수 테이블이다. 이 기능을 이용해서 난수 테이블을 준비한다. 매개변수로 unsigned int값을 받는다. 시드라고 함. 여러 개의 난수 테이블이 존재하고, 시드 값에 해당하는 난수 테이블의 난수값을 뽑아오는 방식임. 난수를 뽑아 올 떄는 rand()를 사용한다. */ system("cls"); //이 줄을 넣어주면 콘솔창을 깨끗이 지워준다. //srand(10); // //for (int i = 0; i

C++기초

22년 3월 15일(2) - while

#include int main() { /* while문: 반복문이다. while(조건식) { 조건식이 true일 시 계속 반복해서 실행. while(true)일 경우, 무한루프로 돌아간다. while은 주로 무한루프 돌리기 용으로 사용함. 특정 구간 반복문은 for문이 있기 때문이다. } */ int i = 0; while (i

C++기초

22년 3월 15일(1) - for

#include #include int main() { //2중 for 문의 총 반복은 바깥족 for문 반복 * 안쪽 for문 반복 수 만큼 동작. //중첩 for문은 잘못 쓰면 계산이 엄청나게 늘어날 수 있다. 성능 저하의 원인이 될 수 있음. //3중 for문은 왠만하면 안 쓰긴 하는데, 3d 공갈 분할 같은 데서 간혹 쓸 수도 있음. for (int i = 0; i

C++기초

22년 3월 15일

#include #include int main() { //2중 for 문의 총 반복은 바깥족 for문 반복 * 안쪽 for문 반복 수 만큼 동작. //중첩 for문은 잘못 쓰면 계산이 엄청나게 늘어날 수 있다. 성능 저하의 원인이 될 수 있음. //3중 for문은 왠만하면 안 쓰긴 하는데, 3d 공갈 분할 같은 데서 간혹 쓸 수도 있음. for (int i = 0; i

C++기초

22년 3월 8일

#include int main() { //비트 연산자의 실제 활용 예시 const int Attack = 0x1; //이진수 0001 const int Armor = 0x2; //이진수 0010 const int HP = 0x4; // 이진수 0100 const int MP = 0x8; // 이진수 1000 const int Critical = 0x10; // 10000 int Buf = 0; //우리가 어택, HP, 크리티컬 버프를 준다고 하면 //Buf = 0 | 1 = 1 Buf = Buf | Attack; //Buf = 001 | 100 = 101 Buf = Buf | HP; //Buf = 00101 | 10000 = 10101 Buf = Buf | Critical; //버프 체크하기 // //..

hyrule
'C++기초' 카테고리의 글 목록 (4 Page)