728x90

C++ 48

#16. 문자 배열

#문자 배열 일반적으로 char 변수 하나에는 하나의 문자만 들어간다. 그것을 쉽게 저장할 수 있도록 배열을 사용 하는 것이다. char szBuff[10]; 문자 배열의 경우 초기화 시에 큰따옴표(" ")를 사용한다. char szBuff[10] = "Hello"; 이때 문자 배열에는 다음과 같이 배열이 된다. szBuff[0] = 'H'; szBuff[1] = 'e'; szBuff[2] = 'l'; szBuff[3] = 'l'; szBuff[4] = 'o'; szBuff[5] = '\0'; 위와 같이 마지막 배열에는 '\0 ' 즉 NULL이 삽입되어있다. 이 '\0'이 하는 일은 문자열을 [0]부터 쭉 읽다가 \0을 만나는 순간 읽는 것을 정지 한다는 뜻이다. 따라서 저 상태에서 szBuff[2] =..

개발 Study 2021.04.14

# 2차원 배열 시계방향으로 회전하기

5*5의 2차원 배열을 시계방향으로 회전하려고 한다. 즉 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 인 배열을 21 16 11 6 1 22 17 12 7 2 23 18 13 8 3 24 19 14 9 4 25 20 15 10 5 로 회전을 시켜 주는 것이다. 5*5 행렬은 다음과 같이 초기화 할 수 있다. #include using namespace std; void main() { int iArr[5][5] = {}; for (int i = 0; i < 5; ++i) { for (int j = 0; j < 5; ++j) { iArr[i][j] = i * 5 + j + 1; } } } 이제 시계방향으로 한번 회전해야 하는데, 규칙..

#15. 배열(2)

#2차원 배열 2차원 배열은 1차원 배열인 {1,2,3,4} 에서 세로로 배열이 추가 된 것이라고 생각하면된다. 선언법은 자료형 변수명[행][열]; 초기화는 기존 1차원 배열과 같이 int Arr[2][3] = {}; 으로 하면 0으로 초기화가 되고 int Arr[2][3] = { { 1, 2, 3 } , {4, 5, 6 } } ; 으로 할 시 1 2 3 4 5 6 이런식으로 배열 된다. (행렬로 보면 편하다!!) 즉 int Arr[2][3]은 3개의 원소를 가진 배열이 2개 있다고 생각하면 된다. 2차원 배열은 배열의 원소로 배열을 가지는 것이다. 즉, Arr[0] 을 출력해보면 기존 1차원배열에서 Arr만 썼을 때, 출력 했던 것 처럼 주소값이 나온다. 하지만 2차원 배열에서는 int** ptr=Ar..

개발 Study 2021.04.12

#배열로 로또번호 뽑기(3) feat.bubblesort

# 배열로 로또번호 뽑기(2) (tistory.com) # 배열로 로또번호 뽑기(2) # 배열로 로또번호 뽑기 (1) (tistory.com) # 배열로 로또번호 뽑기 (1) 난수를 써서 로또번호 뽑기를 하려고한다. #include #include using namespace std; void main() { srand(unsigned(time(NULL))); int iNum.. hyukee.tistory.com 중복되지 않는 난수 뽑는거까지 완료했다. 이제 뽑은 6개의 난수를 오름차순으로 정렬해보려고 한다. 오름차순 정렬하는데에는 가장 기초적인 방법으로 Bubblesort가 있다. Bubble sort는 배열에서 한 숫자와 그 옆에 있는 숫자를 비교하여 큰 수를 계속적으로 뒤로 보내는 방법이다. for..

#14. 포인터 (2) 및 배열

#13. 포인터 (tistory.com)#13. 포인터#포인터 포인터도 변수의 일종이다. 다른 변수의 주소값을 저장할 수 있는 변수이다. 일반 변수 앞에 어드레스 연산자인 '&'를 붙이면 해당 변수의 주소가 표현된다. #include using namespace std; int mainhyukee.tistory.com# 포인터에서의 const 사용법포인터에서도 상수자료형인 const를 사용할 수 있다. 다만 위치에 따라 그 const가 미치는 영향이 조금 달라진다. int* ptr = nullptr;에서const int* ptr = nullptr;int* const ptr = nullptr; 둘의 const 위치가 의미하는것이 다르다. 첫번째, const int* ptr 은 *ptr의 값의 수정이 불가능..

개발 Study 2021.04.10

#12. 함수 오버로딩 및 디폴트 매개변수

# 함수 오버로딩 함수를 만들때 반환타입과 매개변수를 정하여 만들어 준다. 이때 같은 기능을 하는 함수이지만, 매개변수의 타입이나 매개변수의 갯수가 달라질 때마다 매번 함수를 만들면 함수의 이름이 제각각이 되어 구분하기 힘들어진다. 그때 오버로딩을 쓰면된다. 예를들어, 더하기 함수 add가 있는데, 변수 두개를 받아서 더해주는 함수 int add(int a, int b) { return a+b; } 가 있다고 하자 근데 변수 세개를 받아서 더해주고 싶은데, 저 함수를 만들 때 매개변수를 int a, int b로 했기 때문에 불가능하다. 그렇다고 함수 int add2(int a, int b, int c) 를 만들자니 add와 add2의 구분이 어려워진다. 오버로딩은 같은 이름으로 그 함수를 정의 할 수 있..

개발 Study 2021.04.07

#11. 지역변수, 전역변수 및 메모리구조 (2)

# 지역변수, 전역변수 #10. 함수 및 메모리 구조 (tistory.com) #10. 함수 및 메모리 구조 # 함수 ( y=f(x) ) -> 재사용성이 좋기 때문에 자주 사용한다. 함수는 1. input O output O ex) y=f(x) 2. input O output X ex) srand(seed) 3. input X output O ex) rand() 4. input X output X ex) main() 네.. hyukee.tistory.com 1. 지역변수 앞에 링크에서 볼 수 있듯이, 지역변수, 매개변수는 메모리의 STACK이라는곳에 저장되며, 함수가 끝날때 그 변수는 소멸한다. 따라서 그 변수를 함수에서 선언하여도 main함수에서는 그 변수를 불러오지 못한다. 2. 전역변수 그에 반해 ..

개발 Study 2021.04.07

#10. 함수 및 메모리 구조

# 함수 ( y=f(x) ) -> 재사용성이 좋기 때문에 자주 사용한다. 함수는 1. input O output O ex) y=f(x) 2. input O output X ex) srand(seed) 3. input X output O ex) rand() 4. input X output X ex) main() 네 가지가 있다. 함수는 아래와 같은 형태로 만들어 진다. 반환타입 함수이름 ( 재료(매개변수) ) { 코드; } 반환값이 있을 경우, 코드 마지막에 return 반환값; 을 써준다. 코드내에서 return을 만나는 즉시 해당 값을 반환하고, 함수를 종료 시킨다. ----- # 메모리 구조 우리가 자주 쓰는 지역변수, 매개변수는 STACK 이라는 곳에 할당 된다. 변수가 할당 되는 시점은 함수가 시..

개발 Study 2021.04.06