분류 전체보기
[C++] char, char*, char& 비교
char : 기본 타입 변수 char* : 포인터 변수 char& : 참조 변수 포인터 변수는 참조를 리턴하는 함수처럼 좌항 (L-value)에 쓸 수 없다. char c = 'a'; // 변수 c 생성, 'a' 로 초기화 char* p = &c; // 포인터 변수 p 생성. p는 변수 c의 주소를 가짐 char& s = c; // 변수 s는 이름만 생성. s는 c에 대한 별칭, c와 변수 공간을 공유
[C++] 참조
참조 참조란 무엇인가 1. C 언어에 없는 참조 개념 2. & 기호 사용 (참조자) 3. 참조 변수는 이미 선언된 변수에 대한 별명(alias) 4. 참조 변수, 참조에 의한 호출, 함수의 참조 리턴에 활용 참조의 사용 1. 참조 변수 참조 변수는 이미 선언된 변수에 대한 별명, 참조자(&)를 이용하여 선언반드시 원본 변수로 초기화하여야 함 12345678910111213#include using namespace std; int main(void){ int n=2; int &refN = n; Circle circle; Circle &refCircle = circle; return 0;}cs 1. n과 refN은 동일한 변수 2. n과 refN은 같은 변수 공간을 공유 (n을 공유) 3. 변수와 참조 변..
[C++] 값에 의한 호출, 참조에 의한 호출, 주소에 의한 호출
[C++] 값에 의한 호출, 주소에 의한 호출 값에 의한 호출(call by value) 코드에서 넘겨주는 인자 값이 함수의 매개 변수에 복사 되어 전달 매개변수에 복사 된 객체(값)이 스택에 생성되고 함수 실행 후 스택에서 사라지고, 함수 안에서 일어난 변화가 원본 객체(값)에 영향을 미치지 않는다. 유의할 점 객체를 매개 변수로 가지는 함수의 경우, C++ 컴파일러는 매개 변수 객체의 생성자는 실행되지 않고 소멸자만 실행되도록 컴파일 한다. 복사 되는 객체의 상태를 잃어버리지 않기 위함! 이러한 비대칭 구조를 해결하기 위해 복사 생성자를 호출 하도록 함 참조에 의한 호출(call by reference) ★★★ 함수의 매개 변수를 참조 타입으로 선언, 매개 변수가 호출 하는 쪽의 실인자를 참조하여 실..
[알고리즘] 정렬 시간복잡도 정리
출처 : https://gmlwjd9405.github.io/2018/05/08/algorithm-merge-sort.html
[안드로이드] 신한대학교 열람실 좌석 조회 어플
개발 동기 3학년 2학기 중간고사를 대비하여 시험 공부를 하러 집을 나서는 순간에 열린학습실에 몇 없는 콘센트를 꼽을 수 있는 좌석이 비어있는 지 확인하고 집을 나서고 싶었다. "그때부터 집에서 나가기 전에 좌석 정보를 확인하고 예약할 수 있을까"하는 생각이 들었다. 알아본 결과로는, 지금 우리 학교 열람실 시스템은 좌석 정보를 조회할 수 있는 홈페이지가 존재하지만, 대다수의 학생들이 있는 지도 모르고 심지어 도서관 직원조차도 있는 지 모르는 상황이었다. (http://172.16.6.164.openlink.shinhan.ac.kr:8000/domian5.asp) 때문에 열람실 좌석은 방문해야만 지금 비어있는 좌석을 확인할 수 있었고, 예약이 가능하였다. (교내 도서관 홈페이지) 제한 사항 예약하는 것까..
[C++] string
string C++에서 문자열을 다루는 방법 2가지 C-스트링string 클래스 C스트링은 C언어에서 사용해오던 전통적인 문자열, '\0' 으로 끝나는 문자 배열을 문자열로 취급하는 방법 string은 C++ 표준 라이브러리에서 제공하는 클래스, 문자열을 객체로 다룸 string 클래스를 사용하기 위해서는, #include using namespace std; 위의 코드가 필요합니다. C-스트링은 초기에 할당 받은 메모리 크기 이상의 문자열을 저장할 수 없기 때문에, 개발자의 프로그램 작성에 어려움. string 클래스는 문자열의 크기에 맞추어 스스로 메모리 크기를 조절하므로 매우 편리함! 다양한 string 객체의 사용 string str; // 문자열 초기화string name("King");stri..
[C++] this 포인터
this 포인터 this는 객체 자신에 대한 포인터, 클래스의 멤버 함수 내에서만 사용 static 멤버 함수에서는 사용할 수 없음 객체 자신의 주소를 리턴하고 싶을 때 컴파일러에 의해 탄생하는 변수 (모든 멤버 함수에 묵시적으로 삽입) 1 2 3 4 5 6 7 8 9 10 11 class Circle{ int rad; public: Circle(){ this->rad = 1; } Circle(int rad){ this->rad = rad; } }; cs
[C++] 메모리 누수 (memory leak)
메모리 누수 (memory leak) 동적으로 할당받은 메모리의 주소를 잃어버려 힙에 반환할 수 없게 되면 메모리 누수가 발생 ex) char n = 'a'; char *p = new char[1024]; p = &n; 1024 바이트의 메모리 누수 발생 프로그램이 종료될 때 반환
[C++] 동적 메모리 할당, 반환 ( new, delete 연산자)
1 cs 동적 메모리 할당 및 반환의 필요성 실행 중에 필요한 만큼 메모리를 할당받고 필요 없을 때 반환하는 메커니즘이 필요. 불필요한 메모리 공간을 줄이고 메모리 효율을 높인다. C언어에서는 malloc(), free() 사용 C++에서는 new, delete 연산자 사용 new 연산자는 힙이라는 시스템 공간으로부터 메모리를 할당 delete 연산자는 할당받은 메모리를 힙으로 반환 힙 메모리가 부족하다면 new는 NULL 값을 리턴 new와 delete의 사용 데이터타입 *포인터변수 = new 데이터타입; delete 포인터변수; ex) int *pInt = new int; int *pInt = new int(20); Circle *pCircle = new Circle(); delete 연산자 사용 시..
[C++] 객체 배열
객체 배열 1. 기본 생성자로 객체를 생성하는 객체 배열 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Circle circleArray[3]; // Circle 객체 3개 짜리 객체 배열 생성 circleArray[0].setRadius(10); // 객체 배열의 객체 멤버 접근 Circle *p; p = circleArray // 배열이름이 곧 포인터 for(int i=0; i