언어 52

[C++] Variables, Functions, Pointers, References

* 아래의 내용은 다음 유튜브 강의의 필기임. (이 강의 및 앞의 3강의) https://www.youtube.com/watch?v=IzoFn3dfsPA 1. Variables primitive data types - char, short(2 byte), int, long(4 byte, varies depending on compiler), long long(8 byte) - float: 4 byte - double: 8 byte 그냥 float a = 5.5 이렇게 저장하고 그 부분에 커서 올리면 double이라고 뜸.. float a = 5.5f 이렇게하면 진짜 float으로 저장됨 - bool 이 존재함 (1 byte, 메모리에 저장해야 하니까 byte 단위로 저장하게 됨) * sizeof() 사용..

언어/C&C++ 기본 2021.06.14

[C++] Linker

링커의 역할 : 심볼들과 함수들이 어디에 있는지 찾고 이들을 이어준다. (find where the symbols and functions are and link them together) In visual studio, Ctrl + F7 : compile only Ctrl + F5 : compile and link (Build) - compiling error example: syntax error - linking error example: missing entry point * 에러 메시지가 c로 시작하면 컴파일 에러이고 LNK로 시작하면 링킹 에러임. Linking Error 예시 예를 들어서, a.cpp 파일에 Log()란 함수를 declare 하고 definition은 b.cpp에 했다고 하자..

언어/C&C++ 기본 2021.06.14

[C++] Compiler

* 다음 강의 내용을 정리한 것 https://www.youtube.com/watch?v=3tIqpEmWMLI&list=PLlrATfBNZ98dudnM48yfGUldqGD0S4FFb&index=6 Compile ​ C++은 파일에 대해서 신경쓰지 않는다. (자바는 디렉토리랑 파일명을 프로그램 작성자가 명시해줘야 한다. 예를 들어서 class이름은 파일명이랑 같아야 한다는 점) 코드를 작성하는 사람이 컴파일러에게 이 파일이 어떤 파일이며, 이걸 어떻게 다뤄야 할지를 직접 알려줘야 한다. ​ 예를 들어 파일 확장자를 cpp로 하면 컴파일러에게 이걸 cpp 파일이라고 이해하고 다뤄라하고 알릴 수 있음 ​ Translation Unit 컴파일러는 번역을 단위 별로 실행하는데, 컴파일러가 번역하는 단위를 tran..

언어/C&C++ 기본 2021.06.14

[C++ 템플릿] 스택(stack), 큐(queue), 우선순위 큐(priority_queue)

1. 스택(stack) https://www.cplusplus.com/reference/stack/stack/?kw=stack stack - C++ Reference container_typeThe second template parameter (Container)Type of the underlying container www.cplusplus.com Member functions empty: 스택이 비었는지 확인 size: 스택에 들어있는 엘리먼트 수 = 스택 사이즈 반환 top: 다음 엘리먼트 접근 push: 새로운 엘리먼트 추가 emplace: construct and insert element pop: 맨 위에 있는 엘리먼트 삭제 swap: 내용물 바꿈 예시) #include #include u..

언어/C&C++ 응용 2021.06.14

[TS] Invalid address specified to RTlValidateHeap & DLL개념

에러상황: // 사용하고 있던 구조체 & 변수 정의 typedef struct node ={ NODE* right; NODE* left; void* data; }NODE; NODE* root = ...; NODE* newRoot = ...; // 문제가 생긴 부분: free(root->data); newRoot = root->right; 자꾸 위 두 줄 에서 문제가 떠서 대체 문제가 뭔지... 싶었다. 'x' 표시가 뜬 줄에 문제가 있은 줄 알고 메모리 공간에 들어가있는 데이터를 일일이 따지며 보았지만 문제를 찾을 수가 없었다. 왜냐면 문제는 그 윗줄에 있었으므로..! 경고 메시지로 HEAP[bst2.exe]: Invalid address specified to RtlValidateHeap( 000001..

언어/C&C++ 응용 2021.06.14

[C] 이중포인터

*pdata 는 data를 의미함 **ppdata 도 data를 의미함 *ppdata 는 pdata를 의미함 왜 이중 포인터를 사용하는가? 다음 코드를 보면.. void addNode(LIST* myList, MYDATA* myData) { NODE* newNode = (NODE*)malloc(sizeof(NODE)); newNode->dataptr = myData; newNode->next = NULL; NODE* pPre = NULL; NODE* pLoc = NULL; int result = _search(myList, &pPre, &pLoc, myData); if (result) { // insert } } int _search(LIST* myList, NODE** ppPre, NODE** ppLo..

언어/C&C++ 응용 2021.06.14

[TS] strcpy, strcpy_s

strcpy - 문자열 복사 기능 - 변수나 문자열 상수에 저장되어 있는 문자열을 다른 변수(메모리)에 복사할 때 주로 사용. 복사할 원문은 반드시 끝에 NULL문자가 포함되어 있어야 한다. 함수 원형: char *strcpy(char *strDestination, const char* strSrc); - strcpy 함수가 반환하는 char*는 strDestination과 같은 값, 문자열 배열의 시작 값 에러: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS strcpy는 복사할 메모리 제한을 안걸기 때문에 ..

언어/C&C++ 응용 2021.06.14

[C] include, include guard(#idndef)

include - 해당 파일을 찾아서 그 파일의 코드를 복붙한다고 이해하면 됨. - 두 가지 방식: #include : 라이브러리에서 헤더파일 찾음 #include "": 주소에서 찾음 (일단 현재 디렉토리에서 검색함) include guard 헤더 파일이 참조되거나 include 될 때 중복되는 것을 방지하기 위해서 사용하는 것 element라는 게 여러 파일에서 다르게 정의될까봐 이를 막으려고 하는 것이다. - ifndef 방식을 주로 사용한다. #ifndef ELEMENT // 만약 element가 정의되지 않았다면 #define ELEMENT // 여기서 정의해라 // 내용 #endif //가드 되는 부분의 끝

언어/C&C++ 응용 2021.06.14