# Language/C++

    [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) ★★★ 함수의 매개 변수를 참조 타입으로 선언, 매개 변수가 호출 하는 쪽의 실인자를 참조하여 실..

    [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

    [C++] 객체 포인터

    객체 포인터 객체에 대한 포인터 변수를 선언하고, 포인터 변수를 통해 객체의 멤버 변수를 읽고 값을 쓰거나 멤버 함수를 호출 1234567891011121314#include using namespace std; int main() { Circle donut; double d; Circle *p; //객체 포인터 선언 p = &donut; //donut 객체 주소 저장 d = donut.getArea(); d = p->getArea(); // 포인터를 통해 멤버 함수 호출 d = (*p).getArea(); return 0;}Colored by Color Scriptercs 객체 포인터 변수에 객체의 주소를 저장하고, 포인터를 이용하여 객체 멤버를 접근한다. 객체 이름으로 멤버를 접근할 때는 점(.) 연..

    [C++] 문자열 (C-string, string)

    1. C-string 은 널 문자로 끝나는 char 배열을 말합니다. 2. string 문자열을 객체로 다루는 방법, 권장하는 방법 C++에서는 C언어와의 호환성 때문에 C-string 을 그대로 사용합니다. getline을 이용한 간단한 입출력 예제입니다. 12345678910111213141516171819#include #include using namespace std; int main(){ string s; char str[100]; while(cin.getline(str,100)) //배열 버전 { cout