본문 바로가기

언어58

[C++] 함수와 참조, 복사 생성자 [C++] 함수와 참조, 복사 생성자 값에 의한 호출(call by value) : 호출하는 코드에서 넘겨주는 실인자 값이 함수의 매개 변수에 복사되어 전달되는 방식 주소에 의한 호출(call by address) : 주소를 직접 포인터 타입의 매개변수에 전달받는 방식 * swap 함수의 매개변수 비교 참조 변수 : 이미 선언된 변수에 대한 별명 참조 변수를 선언하기 위해서 & 기호를 사용 1) 참조 변수 선언 ※ 참조 변수 선언 시 주의 사항 초기화가 없다면 컴파일 오류가 발생 참조자 &의 위치에 무관 참조 변수의 배열x 참조 변수에 대한 참조 선언o 2019. 5. 24.
[C++] 객체 포인터와 객체 배열 & 동적 생성 [C++] 객체 포인터와 객체 배열 & 동적 생성 객체를 다루기 위해 객체에 대한 포인터 변수를 선언 이 포인터 변수로 객체의 멤버 변수를 읽고 값을 쓰거나 멤버 함수를 호출 객체 자신에 대한 포인터 클래서의 멤버 함수 내에서만 사용됨 static 멤버 함수에서는 사용 x 멤버 함수에 컴파일러 몰래 삽입한 매개 변수 1) 멤버 변수의 이름과 동일한 이름으로 매개 변수 이름을 짓고자 하는 경우 2) 객체의 멤버 함수에서 객체 자신의 주소를 리턴할 경우 ※ 연산자 중복을 구현할 때 多 2019. 5. 22.
[C++] 클래스와 객체 [C++] 클래스와 객체 캡슐화 : 객체의 구성 요소들을 캡슐로 싸서 보호하고 볼 수 없게 하는 것(객체의 가장 본질적인 특징) ※ 일부는 공개함 -> 객체들이 서로 정보를 교환하고 통신하기 위해서 클래스 : 객체를 정의하는 틀 객체 : 멤버 함수(행동 behavior)와 멤버 변수(객체의 상태 state)로 구성 변수와 함수로 구성 멤버 변수 멤버 함수 원형형태로 선언 리턴 타입, 매개 변수 리스트 등이 모두 선언되어야 함 public 멤버 : 클래스의 일부 멤버들을 다른 클래스와의 통신을 위해 외부에 공개함 private 멤버 : 클래스 내의 멤버 함수들에게만 접근이 허용됨 protected 멤버 : 클래스 내의 멤버 함수와 이 클래스를 상속받은 파생 클래스의 멤버 함수에게만 접근이 허용됨 ※ 접근 .. 2019. 5. 19.
[C++] 화면 출력/입력 C++ 화면 출력 / 입력 #include 사용 [화면 출력] cout 객체 디폴트 값이 '\n'임 2. string 클래스 getline(cin, singer); = 공백이 포함된 문자열 입력 #include // 헤더 파일 추가 srting singer; getline(cin, singer); 2019. 4. 10.
[C] 메인함수 정의 메인함수 정의 이 부분은 항상 내가 C를 공부하면서 궁금했던 부분이다학교에서는 항상 int main(void)를 사용했는데 다른 사람이 푼 코드를 보면 이상한 포인터가 매개변수?로 들어가 있는걸 보고 궁금증이 생겼다. 내가 항상 사용하는 main 함수이다.친근하당ㅋㅋ 이건 또 다른 main 함수이다. int argc = 메인함수에 전달되는 데이터의 갯수char* argv[] = main 함수에 전달되는 실직적인 데이터 / char형 포인터의 구조로 이루어짐 만약 우리가 입력을 한다면 그건 argv[1], argv[2]에 순차적으로 들어간다. 인덱스 argv 0 실행 파일 이름으로 실행한 경우 = 실행파일실행 파일 경로로 실행한 경우 = 실행 파일 경로 1 첫 번째 옵션 2 두 번째 옵션 n n 번째 옵션.. 2019. 1. 11.
[C] 파일의 분활과 헤더파일 파일의 분할 & 헤더파일 extern외부에 선언 및 정의된 것을 컴파일러에게 알림ex) extern int num;extern void price(void); static 전역변수다른 파일에서의 접근을 막음ex) static int num=0; 1. #include 표준 헤더파일이 저장되어 있는 디렉터리에서 파일을 찾음 2. #include "헤더파일 이름"이 문장을 포함하는 소스파일이 저자오딘 디렉터리에서 헤더파일을 찾음절대경로로 지정할 수 도 있는데 문제점이 많아서 잘 안쓰임~상대경로를 사용하자! (ex #include "header.h") *구조체의 선언 및 정의는 헤더파일에 삽입하는 것이 좋음*구조체가 두번 이상 선언되지 않도록 주의->중복을 막을라믄 #ifndef ... #endif 를 이용 /.. 2019. 1. 11.
[C] 매크로와 선행처리기 선행처리 컴파일 이전의 처리#문자로 시작ex) #define PI 3.14(지시자) (매크로) (매크로몸체)==오브젝트와 유사한 매크로 == 매크로 상수 매크로 매크로를 정의할때는 괄호를 하나하나 하자!두 줄 이상을 정의할 때는 \ 를 사용매크로 함수장점 단점일반 함수에 비해 실행속도가 빠름 정의하기가 까다로움 자료형에 따라서 별도로 함수를 정의하지 않아도 됨 디버깅하기가 쉽지 않음 따라서 작은 크기의 함수나 호출의 빈도수가 높은 함수에 매크로를 사용함 조건부 컴파일 #if... #endif 참인 if문만 삽입 #ifdef... #endif 매크로가 정의되어 있을경우 동작 #ifndef... #endif 매크로가 정의되어 있지 않은경우 동작 #else 나머지의 경우 #elif #if에만 사용 (else .. 2019. 1. 10.
[C] 메모리 관리 & 동적 할당 메모리 구조 코드 / 데이터 / 힙 / 스택 영역으로 구분 1. 코드 영역코드가 저장되는 메모리 공간 2. 데이터 영역전역변수와 statice으로 선언되는 static 변수가 할당 * 프로그램 종료 시까지 남음 3. 스택영역지역변수와 매개변수가 할당* 함수를 빠져나가면 소멸 4. 힙 영역원하는 시점에 변수를 할당하고 소멸하도록 지원 프로그램의 실행 흐름 1. 전역변수 / static 변수가 데이터 영역에 할당 -> main함수 호출 -> 지역변수가 스택에 할당2. main 내에서 함수가 호출 -> 함수의 매개변수 / 지역변수가 스택에 할당3. 함수의 반환으로 함수호출 시 할당된 매개변수와 지역변수가 소멸4. 프로그램 종료 -> 운영체제에 의해서 할당된 메모리 공간 전체를 반환 -> 전역변수 소멸 * 먼저.. 2019. 1. 9.
반응형