함수의 인자 값과 매개변수의 차이 인자 값 : 함수에 전달된 실제 값매개변수 : 함수 정의부에 선언된 변수의 이름 int add(int x, int y){ //x,y는 매개변수 return x+y; } int main() { int a = 10, b = 20; move(a,b); //a,b는 인자값 } 좀 다르다. 구분하자. 공부 중 메모/C,C++-기타 정보 2018.07.17
volatile 변수 주로 메모리 맵 입출력(MMIO)을 제어할 때, volatile을 선언한 변수를 사용하여 컴파일러의 최적화를 못하게 하는 역할을 한다.static int foo; void bar(void) { foo = 0; while (foo != 255); } foo의 값의 초기값이 0 이후, while 루프 안에서 foo의 값이 변하지 않기 때문에 while의 조건은 항상 true가 나온다. 따라서 컴파일러는 다음과 같이 최적화한다.void bar_optimized(void) { foo = 0; while (true); } 이렇게 되면 while의 무한 루프에 빠지게 된다. 이런 최적화를 방지하기 위해 다음과 같이 volatile을 사용한다.static volatile int foo; void bar (void) .. 공부 중 메모/C,C++-기타 정보 2018.06.18
자기 자신을 출력하는 코드 //자신의 코드를 그대로 화면에 출력하는 샘플 #include #include #include int main() { FILE* fp; char buff[256]; fopen_s(&fp, "sample_015.cpp", "r"); while (!feof(fp)) { fgets(buff, 256, fp); printf("%s", buff); } fclose(fp); } 공부 중 메모/C,C++-기타 정보 2018.06.16
C언어 표준 문서에 대해서 C언어의 확정된 표준은 돈을 주고 구매해야한다고 한다. 다만 확정되기 전의 초안은 공개되어 있고 이는 아래의 페이지에 정리되어 있다. https://code.i-harness.com/ko/q/13ef8 당연히 전부 영어다. 공부 중 메모/C,C++-기타 정보 2018.06.13
errno_t 타입 기본적으로 errno_t 타입은 int 타입과 같다. errno_t 타입은 vs에서 함수의 에러 정보를 표현하기 위한 반환값으로 사용된다. 에러가 아니면 0을 반환한다. 그 외 값들에 대한 정보는 https://msdn.microsoft.com/ko-kr/library/t3ayayh1.aspx 참조 공부 중 메모/C,C++-기타 정보 2018.06.09
const int* 와 int* const의 차이점 int i; const int* cip = &i;//포인터 변수를 통해서 값을 변경하는 것을 금지. int* const ipc = &i;//포인터가 가리키는 대상을 변경하는 것을 금지. int main() { int i = 5; int j = 6; const int* cip = &i; cip = &j; // *cip = 8; 안됨 int* const ipc = &i; *ipc = 1; // ipc = &j; 안됨 } const int* const cipc = &i; //포인터가 가리키는 대상을 변경하는 것도 포인터 변수를 통해 값을 변경하는 것도 금지. 공부 중 메모/C,C++-기타 정보 2018.06.09
64비트형 정수형 변수 long long과 %I64d 64비트형 정수형으로 자료형 long long을 사용할 수 있다.vc에는 64bit형 정수형을 __int64로 정의해두었는데, 이는 표준에 맞는 것은 아니다. 이를 printf로 표현할 때의 서식문자는 %I64d이다. (%l64d가 아니다.)//파란색에 쓰인건 대문자 I(아이)이고, 빨간색에 쓰인 것은 소문자 l(엘)이다. .... 공부 중 메모/C,C++-기타 정보 2018.06.09
동적할당의 한계치. 32Bit OS에서의 동적영역의 한계치는 4Giga-1Byte라고 한다. (1Byte는 항상 커널이 잡고 있다고 한다.)그렇다면 64Bit에서는 8Giga-1Byte일 것 같은데, 아니다. 똑같이 4Giga-1Byte이다.64Bit OS와 32Bit OS의 호환성을 위해서 늘리지 않은것일까?따로 더 쓸 수 있게 설정하는 방법이 있다고 하는 것도 같던데 아직 정확한 정보를 찾지 못했다. 4294967295byte = 4Giga-1Byte.아래의 코드에서 더 할당하려고 하면 뻑이난다. #include #include int main() { unsigned long int num; scanf_s("%u", &num); void* p = (void*)malloc(num+4294967295); //_msize(p.. 공부 중 메모/C,C++-기타 정보 2018.06.08
1. C/C++ 소개. C/C++에 대한 간략한 설명 C란? 1972년에 벨 연구소의 데니스 리치(Dennis MacAlistair Ritchie, 1941.9.9~2011.10.12)가 만든 프로그래밍 언어. C++이란? 1983년에 벨 연구소의 비야네 스트롭스트룹(Bjarne Stroustrup, 1950.12.30 ~ )이 발표하고 이후 계속하여 발전한 C언어를 바탕으로 만든 프로그래밍 언어. C++라고 쓰고 읽을 때는 C plus plus 혹은 시플플이라고 읽는다. (주인장은 씨쁠쁠이라고 읽는다.) C/C++의 역사 C의 역사 C를 만든 데니스 리치는 크기는 작고 속도는 빠르며 하드웨어를 직접 제어할 수 있는 프로그램을 만들 수 있는 언어가 필요했다. 당시에 이를 충족시킬 수 있는 언어는 저급언어로 분류되는 특정 기계에.. 공부 중 메모/C,C++-기타 정보 2014.11.27
C++에서 헤더파일과 구현파일을 구분하기. 14.11.26 추가 / 순차적 방법론을 사용하는 C가 아니라 객체지향 방법론을 사용하는 C++에서 지켜야 할 사항. (이라고 생각하는데 공부한지 너무 오래되서 가물가물하다...) 작성일 / 09.06.18 헤더파일에 넣어야 하는 것. (*.h) 구현파일에 넣어야 하는 것 (*.cpp) 클래스의 정의 인라인 멤버 함수 함수 템플릿의 선언과 정의 멤버 함수의 정의 정적 멤버 함수의 정의 정적 멤버 변수의 정의 이렇게 구분해놓을 경우 장점 - 소스 코드가 간결해져서 읽기 편해진다. - 관련된 내용으로 모여있어 필요한 부분을 찾기가 쉽다. - 소스의 관리와 재사용이 용이해진다. 구분할 떄의 규칙 1. 공유될 함수가 있는 구현 파일의 이름을 따서, 헤더 파일의 이름을 짓는다. 2. 이 헤더 파일 안에는 같은 이.. 공부 중 메모/C,C++-기타 정보 2014.11.26