분류 전체보기 169

<포인터> 연산 / const

포인터 연산 포인터 연산 : 덧셈, 뺄셈을 지원한다. 일반적인 사칙연산은 1을 더할 경우 단순하게 값이 1이 증가하게 되지만, 포인터의 경우는 1을 더하면 단순하게 1이 증가하는 개념이 아닌 해당 포인터 타입(int포인터 이면 int, float포인터 이면 float)의 메모리 크기 만큼이 증가하게 된다. 즉, 2를 더하게 된다면 int포인터일 경우 int의 크기인 4바이트 * 2 만큼 메모리주소의 값이 증가하게 되는 것이다. const 포인터 Number는 상수이므로 주소를 붙여주면 const * 가 된다. pNumber는 일반 포인터 타입이므로, 타입이 달라서 에러가 발생한다. 포인터 타입 왼쪽에 const를 붙여줄 경우, 해당 포인터 변수는 다른 변수의 메모리 주소로 값을 변경하는 것이 가능하다. ..

C++ 문법 2022.04.09

<포인터>

포인터 : 메모리 주소를 저장하는 변수 타입이다. int, float 등 모든 변수 타입은 포인터 타입을 선언할 수 있다. int변수의 주소는 int포인터 타입의 변수에 담을 수 있고 float변수의 주소는 float 포인터 타입의 변수에 담을 수 있다. 변수의 주소를 선언할때는 변수 앞에 & 을 붙여주면 해당 변수의 주소가 된다. 32비트 타겟의 프로그램은 메모리 주소가 16진수 8자리가 나오게되고, 64비트 타겟의 프로그램은 메모리 주소가 16진수 16자리가 나오게된다. 즉, 포인터 변수는 메모리 주소를 저장하는 변수이므로 32비트 타겟에서는 4바이트가 되고 64비트 타겟에서는 8바이트가 된다. ※ 포인트 사용시 주의할 점 : 이미 지워진 메모리를 참조하게 될 경우, 잘못 접근을 하면 문제가 발생한다..

C++ 문법 2022.04.08

<함수 호출 규약>

함수 호출 규약 (Calling Convention) : 파라미터를 전달하는 방법에 대한 약속을 정의한 것 출처: https://ccurity.tistory.com/15 [열공하는베짱이] 32비트 모드 (1) __cdecl 방식(C declaration) [1] C와 C++(가변인자)의 기본 호출규약이다. [2] 인자(argument)는 스택을 사용해서 오른쪽에서 왼쪽 순서로 전달한다. [3] callee(호출자)가 스택포인터를 정리한다. (c언어에서는 내부적으로, assembly에서는 직접) [4] 함수이름 앞에 _(언더바) 기호가 붙는다. (2) __stdcall 방식(Standard Call) [1] Win32 API[Windows OS의 System call]의 기본 호출 규약이다. [2] __c..

카테고리 없음 2022.04.08

<배열> Array

배열 : 같은 타입의 변수 여러 개를 한번에 선언할 수 있는 기능이다. 배열은 연속된 메모리 공간에 만들어진다. 즉, 하나의 큰 메모리 공간을 할당하고 그 공간을 개수만큼 쪼개서 사용하게 된다. 배열 개수를 지정할때는 반드시 상수로 지정해야 한다. 배열의 각 요소에 접근하기 위해서 인덱스를 제공한다. 인덱스는 0 부터 개수 - 1 까지 존재한다. 배열 선언시에 = {} 을 해주면 배열의 모든 요소를 0으로 초기화 해준다. = {1, 2, 3, 4, 5} 이렇게 해주면 0, 1, 2, 3, 4 번 인덱스에 1, 2, 3, 4, 5 의 값이 들어가고, 나머지를 모두 0으로 초기화 해준다.

C++ 문법 2022.04.08

<반복문> while문, do while 문, 난수

while문, do while문 : 반복문이다. while문 while(조건식) { } while(true) 가 되면, 코드블록 안에 있는 코드를 계속 반복한다. do while문 do { 동작할 코드 }while(조건식); 처음 1번은 동작할 코드가 무조건 동작된다. 그 후 조건식을 체크해서 true이면 계속 동작되고 false이면 빠져나간다. 난수 srand : C++에서 제공하는 난수 테이블이다. 이 기능을 이용해서 난수 테이블을 준비한다. rand() 를 이용해서 난수를 생성한다. #include // 시간에 관련된 기능을 가지고 있는 헤더파일이다. time(0) : 현재 시간을 초단위로 환산하여 얻어온다. time(0) 을 하면 time_t 라는 변수 타입으로 결과가 나오기 때문에 seed 의 ..

C++ 문법 2022.04.08

<반복문> for문

반복문 : 특정 코드를 반복해서 수행할때 사용한다. for문, while문, do while문 3가지가 제공된다. for문 for (초기값; 조건식; 증감값) { 반복해서 실행할 코 } 초기값 : for문으로 진입할때 1번만 동작이 된다. 조건식 : 매번 반복할때마다 동작이 된다. 증감값 : 매번 반복할때마다 동작이 된다. 초기값 -> 조건식 -> true일 경우 코드실행 -> 증감값 -> 조건식 -> true일 경우 코드 실행 -> 증감값 -> 조건식 -> ......... -> 조건식 -> false일 경우 for문 종료 i 변수는 for문의 초기값에서 변수를 선언했다. 이 경우에는 i는 for문 안에서만 사용이 가능한 변수가 된다. 아래처럼 사용하면 무한반복을 한다. for (;;) { }

C++ 문법 2022.04.07

<형변환 & 열거체> enum, enum class

형변환 : 일시적으로 다른 타입으로 변환해주는 것을 말한다. 명시적 형변환, 암시적 형변환 2가지의 형변환 방식이 있다. 명시적 형변환 : 형변환 시키는 것을 정확하게 표기해 주어야 한다. (int) 이런 식으로 변환하고자 하는 타입으로 지정해주면 된다. 암시적 형변환 : 컴파일러가 타입을 구분하여 해당 타입으로 자동으로 형변환 시켜주는 기능을 말한다. Number = Number_2; Number_2는 ENUMBER타입의 상수이지만 자동으로 int타입으로 형변환 처리가 된다. eNumber = (ENUMBER)3; 자동으로 형변환 처리가 안될 경우, (ENUMBER)처럼 명시적으로 형변환을 해주어야 한다. float Number1 = 3.14f; 아래의 경우 float타입 값을 int타입으로 암시적인 ..

C++ 문법 2022.04.07

<분기> switch문

switch문 switch문은 연산 결과에 따라 서로 다른 분기를 만들어 주어야 할 때 간단하게 사용할 수 있는 분기문이다. Break로 끝을 내지 않으면 그 아래 case가 이어서 동작하며, case 어디에도 해당되지 않는다면 default에 해당되는 코드를 실행하게 된다. swtich (변수) { case 체크하고자 하는 상수: 원하는 코드 break; case 체크하고자 하는 상수: 원하는 코드 break; case 체크하고자 하는 상수: 원하는 코드 break; } 체크하고자 하는 상수의 값은 모두 달라야 한다. 변수의 값이 무엇인지를 체크해서 체크하고자 하는 상수에 변수의 값이 있다면 해당 case 밑의 코드가 동작이 된다. break를 만나면 switch문을 빠져나간다.

카테고리 없음 2022.04.07

<분기> if문

분기 : 여러 경우중 하나의 경우만 실행해주는 기능을 말한다. if문과 switch문 2가지가 제공된다. If문 if (조건식) { 실행하고자 하는 코드 작성. } 조건식은 true 아니면 false이다. 위에서 조건식이 true라면 {}(코드블록) 안의 코드가 동작이 된다. 위에서 조건식이 false라면 {}(코드블록) 안의 코드는 무시된다. else { } else는 혼자서 사용할 수 없다. 반드시 if문과 함께 사용이 되어야 하고 if문보다는 아래에 위치해야 한다. else는 if문의 조건이 false일 경우 동작이 된다. else는 if문 1개에 1개만 존재할 수 있다. 없어도 된다. else if(조건식) { 조건식이 true일 경우 실행할 코드. } else if는 혼자서 사용할 수 없다. 반..

C++ 문법 2022.04.07