일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Webpack
- nodejs
- regex
- git
- log4j2
- spring
- Chunk
- 정규표현식
- Express
- Effective Java 3/e
- MySQL
- Node
- upgrade
- 퀵소트
- REACT
- migration
- expire_logs_days
- java
- REACTJS
- log_bin
- npm
- spring cloud
- Regular expression
- current_date
- JavaScript
- Spring Batch
- mysql 5.5
- update
- eslint
- Effective Java
- Today
- Total
목록Language/C/C++ (9)
내 세상
const #define Type O (const int i=3;) X (#define i 3) Scope Global Scope(전역) / Local Scope(지역) Only Global Scope(전역) Bug 확인 컴파일러단에서 처리하기 때문에 디버깅 용이 전처리기가 동작하여 값을 가지고 있기 때문에 디버깅 어려움. 오동작 X Const에 대한 값이 계산된 후 연산이 되기 때문에 오동작하지 않음. ex) const int i = 1+2; int b = i * 3; 결과: 9 O 컴퓨터에서 해당 식 자체를 인식하고 있기 때문에 연산에 오동작이 발생할 수 있음. ex) #define i 1+2 int b = i * 3; 결과: 7 1 + 2 * 3 = 1 + (2 * 3) = 7
C++의 new, delete 사용 예시 #include int main() { // C스타일 메모리 할당 // C : void* => int* 로 암시적 변환 가능 // C++ : void* => int* 로 암시적 변환 불가능 int *p1 = static_cast(malloc(100)); // sizeof(int)*10 free(p1); // C++ 스타일 int *p2 = new int; delete p2; int* p2 = new int[10]; // 배열 버전, sizeof(int)*10; delete[] p2; // 해지 할때도 배열 버전의 delete 사용 int* p3 = new int[10]; delete p3; // 이렇게 한다면? // 표준 문서에서 어떻게 될거 라고 정의 한적이 없..
int main() { int n1 = 0; int* p1 = 0; // ok. 0은 정수 이지만 포인터로 암시적 형변환 된다. //int* p = 10; // error. 10은 정수라도 포인터로 변환될 수 없다. // C++11 스타일 // 포인터 초기화시에는 0 대신 nullptr을 사용하자 int n2 = nullptr; // erorr int* p2 = nullptr; // ok } #include void foo(void *p) { std::cout
C++ 스타일의 캐스팅 - static_cast - 표준 타입을 값으로 캐스팅 - 상속 관계 타입의 캐스팅 - lvalue => rvalue 변환 - void* => 다른 타입으로 변환 - reinterpret_cast - 메모리의 재해석 - 서로 다른 타입의 주소 변환 - 정수 포인터 사이 변환 - const_cast - 동일 타입의 const 속성을 제거하는 캐스팅 > #include #include // static_cast : 가장 일반적인 용도 // 1. 표준 타입을 값으로 캐스팅 // 2. 상속 관계 타입의 캐스팅 // 3. lvalue => rvalue 변환 // 4. void* => 다른 타입으로 변환 int main() { double d = 3.4; int n1 = d; // ok in..
C++11 반복문 #include int main() { int x[10] = { 1,2,3,4,5,6,7,8,9,10 }; // 전통적인 for문 for (int i = 0; i < 10; i++) std::cout
함수 호출 시 디폴트 파라미터 사용 주의 사항 #include // 디폴트 파라미터 : 인자를 전달하지 않으면 디폴트 값 사용 // 주의 사항 2가지 // 1. 함수를 선언과 구현으로 분리시에 디폴트 값은 // 선언 에만 표기해야 한다. // 2. 마지막 인자 부터 차례대로만 지정해야 한다. void goo(int a = 0, int b = 0, int c = 0) {} // ok void goo(int a, int b = 0, int c = 0) {} // ok void goo(int a = 0, int b , int c = 0) {} // error void goo(int a = 0, int b = 0, int c) {} // error, default는 오른쪽 끝부터 진행할 수 있음. goo(1);..
C 표준 입출력 - printf, scanf C++ 표준 입출력 - cin, cout - %d, %c, %f 등의 포맷 지정자 필요 없음. - &a, &b 처럼 주소를 보낼 필요 없음. #include // C++ 스타일 입출력 #include // setw와 같은 조정자 (iomaniplator) int main() { int n = 10; printf("n= %d\n", n); // C++ 방식의 출력 std::cout
namespace 문법 - 관련된 함수, 변수, 구조체 등을 묶는 도구 핵심 1. name의 요소에 접근하는 3가지 방법 2. using 지시어, 선언은 함수 안이나 밖에 있을 수 있음. 3. 가능한 완전한 이름을 사용하는 것이 좋음. #include namespace Video { void init() { printf("Video Init\n"); } } namespace Audio { void init() { printf("Audio Init\n"); } } using namespace Audio; // global space void init() { printf("System Init\n"); } void main() { // 방법1) 완전한 이름 사용 Audio::init(); Video::ini..
C 언어로 퀵소트 구현하기 아래 게시글의 Quick Sort 개념을 바탕으로 짠 소스인데, 사실상 굉장히 보기 불쾌합니다 후후..;;; 2019/05/01 - [Coding/Algorithms] - [Algorithms] Sort Special - Inserting, Counting, Quick, Heap [Algorithms] Sort Special - Inserting, Counting, Quick, Heap Inserting Sort - N 크기의 배열 - 두 번째 index부터 시작해서, 앞 부분에 자신보다 작은 값이 있을 때까지 지나가는 값을 (현재 위치+1)로 이동시킴 - 시간복잡도 O(N^2) Counting Sort - N 크기의 배열, K 크기.. sga8.tistory.com #defi..