본문 바로가기

프로그래밍/C/C++

가변인자 1. 가변인자란?인자의 개수가 변한다는 뜻을 의미한다.같은 함수명이어도 파라미터를 2개, 3개 쓸 수 있다. 2. 자주 사용하는 printf의 원형_Check_return_opt_ _CRTIMP int __cdecl printf(_In_z_ _Printf_format_string_ const char * _Format, ...); 내부적으로 __cdecl 호출규약을 사용하고 있다.... 부분이 가변 인자, 가변 파라미터를 의미한다. 3. 가변인자를 사용하려면?필요 헤더 - stdarg.h조건 - 최소 1개 이상의 고정 인수가 필요하다. ... 파라미터는 순서 상 가장 마지막에 있어야 한다. 가변인자 함수에서 사용되는 변수들을 알아야한다. va_list - char*로 정의되어 있으며 각 인자의 시작 주소.. 더보기
friend 설명friend 키워드는 c++에서 지원하는 예외적인 기능의 키워드다. 접근 지정자(Access Modifier)를 완벽히 무시할 수 있는 예외적인 기능을 가졌다. 객체 지향 개념의 정보 은닉(Information Hiding) 개념에 정면으로 위배된다. 기능 및 특징private 건 protected건 friend로 선언된 대상에게는 완벽하게 public으로 작용한다. 대상이 외부이건, 상속 관계도에 있건 그런 것은 중요치 않다. friend 키워드는 특이하게도 '당하는' 쪽에서 선언한다. 기존의 키워드 선언은 그것을 하려는 쪽에서 붙였었다. ex) static 선언시 해당 대상은 static 멤버가 된다. 반면 friend는 friend로 지정될 대상을 정하고, 그 내용을 자기 클래스 안 (혹은 함수.. 더보기
__forceinline, __inline, inline 함수 조사 MSDN 해석(VS2013)- 개인적인 해석이므로 원문과 다소 차이가 있을 수 있습니다. 1. __inline, __forceinline, inline 개요https://msdn.microsoft.com/ko-kr/library/z8y1yy88.aspx 정의inline 및 __inline 지정자는 함수가 호출되는 모든 위치에 함수 본문을 치환하도록 컴파일러에게 지시하는 것이다. inline function_declarator; __inline function_declarator; // Microsoft Specific __forceinline function_declarator; // Microsoft Specific 설명이런 inline 함수의 치환은 컴파일러가 비용/이익 분석 결과 이점이 있는 경우에.. 더보기
Stroustrup Empty class에 대한 내용 읽어보기 1. 원문Why is the size of an empty class not zero?To ensure that the addresses of two different objects will be different. For the same reason, "new" always returns pointers to distinct objects. Consider:class Empty { }; void f() { Empty a, b; if (&a == &b) cout 더보기
[c++] main함수의 인자 argc, argv 1. argc, argv 메인 함수도 함수기 때문에 값을 전달하고 리턴도 할 수 있다. argc는 argument count로 들어오는 인자들의 수를 저장한다. argv는 문자열 상수를 캐릭터 포인터 배열로 저장한다. 메인 함수의 형태는 다음과 같다. int main(int argc, char* argv[]) 메인 함수 진입시 외부에서 들어오는 인자들을 컨트롤하기 위한 방법이다. 2. 작성 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 #include int main(int argc, char* argv[]) { int i = 0; printf("argc = %d\n", argc); for (i = 0; i cmd로 명령프롬프트에 들어간다. 해당 경로를 찾아가 naver.exe에 직접 인자들.. 더보기
부동소수점과 예시 1. 부동소수점이란? 현재 사용되는 부동 소수점 방식은 IEEE 754 기준을 따른다. 단정밀도(single percision)에서는 부호 1비트, 지수부 8비트, 가수부 23비트를 사용한다.(32비트) 배정밀도(double percision)에서 부호 1비트, 지수부 11비트, 가수부 52비트를 사용한다.(64비트) 부동소수점은 고정소수점에 비해 매우 크거나 작은 값을 표현할 수 있다. 하지만 연산 속도가 느리다. 2. 변환 순서 - 이진수 변환 - 정규화 - 지수부 바이어스 표현 - 정형화 -12.31을 부동소수점 32비트 컴퓨터에서 표현 해보면 이진수 변환 12는 1100(2)이 나온다. 0.31 = 0.010011..........(2) -12.31은 -1100.010011............... 더보기
C와 C++의 차이점 1. C는 절차지향, C++ 객체지향?정확히 말하면 C++는 절차지향과 객체지향을 모두 가진 녀석이라고 한다.C++는 절차지향이면서 객체지향 컨셉으로 프로그래밍 언어이다.그러므로 이를 객체지향 언어니 절차지향 언어니 논하기는 어렵다.둘 다 되는것을 보고 어느 하나라고 말할 수 없다는 것이다. 2. #define vs constC에서는 상수를 사용할 때 자주 사용하는 #define은 전처리기로써메인 함수 밖에서 선언하여 사용한다.C++에선 const 키워드를 통해 메인 함수 내에서 변수를 상수화하여 사용할 수 있다. 3. bool논리타입인 bool이 생겼다. 1바이트로 0과 1을 출력한다. 4. 동적할당 malloc,free vs new,deletemalloc, free - stdlib 헤더의 표준 함수,.. 더보기
기호 이름 읽는 법 기호 이름 영어 표현 ! Exclamation Point (익스클레메이션 포인트) " Quotation Mark (쿼테이션 마크) # Crosshatch (크로스해치) $ Dollar Sign (달러사인) % Percent Sign (퍼센트사인) @ At Sign (엣 사인, 혹은 엣) & Ampersand (앰퍼센드) ' Aposterophe (어퍼스트로피) * Asterisk (아스테리스크) - Hyphen (하이픈) . Period (피리어드) / Slash (슬래시) \ Back Slash (백슬래시) : Colon (콜론) ; Semicolon (세미콜론) ^ Circumflex (서큠플렉스) ` Grave (그레이브) { Left Brace (레프트 브레이스) } Right Brace (라이트.. 더보기