프로그래머 썸네일형 리스트형 [포프 tv 복습] 나만의 라이브러리 만들기, C99 나만의 라이브러리 만들기 C에서도 라이브러리를 만들 수 있다 오브젝트 파일을 모아 라이브러리로 만듦 다시 컴파일할 필요 없이 코드 재활용이 가능 소스 코드 공개 없이(단, 헤더 파일은 예외) 라이브러리 배포 가능 C에서는 두 종류의 라이브러리를 만들 수 있다고 했음 정적 라이브러리 동적 라이브러리 (복습) 정적 라이브러리와 링크 정적 라이브러리와 링크하는 것을 정적 링킹이라고 함 라이브러리 안에 있는 기계어를 최종 실행파일에 가져다 복사함 동적 링킹에 비해 실행 파일의 크기가 커짐 메모리를 더 잡아먹을 수 있음 실행 속도가 빠름 보통 정적 라이브러리를 사용하는 절차 소스 코드들을 컴파일하여 정적 라이브러리를 만듦 보통 파일 하나 물론 여러 개의 라이브러리를 만들면 파일도 여럿 확장자는 *.lib(윈도우 .. 더보기 [포프 tv 복습] 전처리기 전처리기 전처리기로 할 수 있는 일들 다른 파일을 인클루드 전처리기 지시문 #include을 사용 매크로를 다른 텍스트로 대체 #define, #undef와 전처리기 연산자 #, ##를 사용 소스파일의 일부를 조건부로 컴파일 전처리기 지시문 #if, #ifdef, #ifndef, #else, #elif, #endif를 사용 일부로 오류를 발생시킴 전처리기 지시문 #error를 사용 매크로 대체 : #define #define 식별자 대체_목록(선택) #define A (10) 전처리기가 소스 코드 뒤지다가 A가 보이면 모두 (10)으로 바꿔줌 #define A 이것도 가능 하지만 바꿔줄 내용이 없음 그 대신 다른 전처리기 지시어로 A가 정의 돼 있는지 판단 가능 #define TRUE(1) #define.. 더보기 [면접 대비] C를 사용한 해시 맵 구현 size_t hash_65599(const char* string, size_t len) { size_t i; size_t hash; hash = 0; for(i = 0; i > 16); } 충돌까지 고려한 해시 맵 예 int add(const char* key, int value, size_t (*hash_func)(const char*, size_t)) { size_t i; size_t start_index; size_t hash_id; hash_id = hash_func(key, strlen(key)); start_index = hash_id % BUCKET_SIZE; i = .. 더보기 [면접 대비] C를 사용한 linked list 구현 연결 리스트 전체를 출력하는 코드 예 typedef struct node{ int value; node_t* next; } node_t; void print_node(const node*t head) { node_t* p = head; while(p != NULL){ printf("%d", p->value); p = p->next; } } 헤드 노드 node_t* head = NULL; 해제코드 void destroy(node_t* head) { node_t* p = head; while(p != NULL){ node_t* next = p->next; free(p); p = next; } } node_t* haed = NULL // 생략 destroy(head); head = NULL; 삽입코드 맨 앞에.. 더보기 [포프 tv 복습] C 자료구조 기초 자료구조 기초 자료구조란? - 컴퓨터에서 여러 자료들을 조직적, 체계적으로 저장하는 방법 - 보통 동일한 자료형을 여럿 저장하는 ㅜㄱ조를 의미 - 자료구조에 따라 요소들 사이의 관계를 정의하는 규칙이 있음 - 다음 요인에 따라 상황마다 보다 효율적인 자료구조가 존재 - 데이터에 접근하는 빈도 - 데이터에 접근하는 방법(ex. 삽입, 검색, 읽기, 지우기 등) 자료구조의 효율성 - 효율성은 주로 시간 복잡도를 말함 - 공간 복잡도를 포함하는 경우도 있음 - 따라서 주로 Big-O 표기법을 사용 - 보통 효율성을 논할 때는 하드웨어 최적화를 고려 안 한 이론이 전부 - 적은 용량의 데이터는 그렇지 않을 수 있음 배열 메모리 한 덩어리로 표현 가능한 가장 간단한 자료구조 여러 자료들을 그 메모리 덩어리 안에 .. 더보기 [포프 tv 복습] 레지스터, 스택 & 힙, 동적 메모리. 다중 포인터 레지스터, 스택 & 힙, 동적 메모리. 다중 포인터 메모리의 종류 프로그램에서 주로 사용하는 부품은 CPU 메모리 메모리는 또 다시 나뉘는데... 스택 메모리 힙 메모리 기본은 힙 메모리 힙 메모리가 범용적인 기본 형태 스택은 특별한 용도를 가진 메모리 프로그램마다 특별한 용도에 사용하라고 별도로 떼어놔 준 것이 스택 메모리 엄밀히 말하면 그 프로그램의 thread마다 CPU 안에도 저장공간이 있음 레지스터 : CPU에서만 사용할 수 있는 고속 저장 공간 엄밀한 의미의 메모리는 아님 레지스터 메모리를 읽고 쓰는 게 느린 이유 CPU가 메모리에 접근할 때마다 버스를 타야 함 대부분 컴퓨터에 장착하는 메모리는 DRAM임 DRAM은 가격이 저렴한 대신, 한 가지 큰 단점이 있음 기록된 내용을 유지하기 위해서 .. 더보기 [포프 tv 복습] 가변 인자 함수, 올바른 오류 처리 방법 가변 인자 함수, 올바른 오류 처리 방법 가변 인자 함수 (, ...); 정해지지 않은 수의 매개변수(가변 인자)를 허용하는 함수 반드시 최소 한 개의 정해진 자료형의 매개변수가 필요 가변인자는 '...'로 표현 가변 인자 함수의 예 #include int add_ints(const size_t count, ...) { va_list ap; int sum; sisze_t i; sum = 0; va_start(ap, count); { for(i = 0; i < count; i++){ sum += va_arg(ap, int); } } va_end(ap); return sum; } int main(void) { int result; result = add_ints(1, 16); printf("result: %.. 더보기 [포프 tv 복습] 구조체, 공용체, 함수 포인터 구조체, 공용체, 함수 구조체, 구조체의 필요성 구조체 데이터의 집합 여러 자료형을 가진 변수들을 하나의 패키지로 만들어 놓은 것 주소를 전달하지 않는 한 값형 구조체의 필요성 사람은 세상을 바라볼 때 물체 단위로 봄 구조체를 사용하면 실수도 막을 수 있다 같은 형의 데이터 여러 개를 매개변수로 받을 때 순서가 바뀌면 컴파일러가 실수를 찾을 방법이 없음 실수를 줄이려면 원자성을 보장하는 연산(atomic operation)을 사용하는 게 좋음 구조체의 선언 및 사용 세미콜론 잊지 말 것. struct date{ int year; int month; int day; }; date란 구조체. 변수명은 date. struct date date; 함수의 매개변수로도 사용 가능 int is_moday(struct.. 더보기 오늘의 복습 | C++ 11 | lambda function | binary tree | linked list #C++11에서 추가된 핵심 기능 auto 자료형을 추론 실제 자료형은 컴파일 하는 동안 결정됨. 따라서, 반드시 auto 변수를 초기화해야 함. static_assert 컴파일 중에 assertion 평가 컴파일러가 assert 조건이 참인지 아닌지 앎 실패하면 컴팡리러는 컴파일 에러를 뱉음 default/delete default 키워드를 사용하면, 컴파일러가 특정한 생성자, 연산자 및 소멸자를 만들어 낼 수 있음 그래서, 비어 있는 생성자나 소멸자를 구체화할 필요가 없음 또한 기본 생성자, 연산자 및 소멸자를 더 분명하게 표시할 수 있음 컴파일러가 자동으로 생성자를 만들어 주길 원치 않는다면 delete 키워드 사용 private 접근 제어자로 빈 생성자를 만드는 트릭은 이제 그만 올바른 에러 메시.. 더보기 [Pytorch] RNN으로 문장 학습시키기 아래의 문장의 RNN 모델을 통하여 모델링 한다. sentence = ("if you want to build a ship, don't drum up people together to collect wood and don't assign them tasks and work, but rather teach them to long for the endless immensity of the sea.") a. 위의 문장을 이용하여 모델을 학습 시킬 때 10문자씩 잘라서 학습시킨다. b. 학습 완료 후 학습 시 사용했던 입력 데이터를 이용하여 결과물을 출력한다. 전체코드 import torch import torch.nn as nn import torch.optim as optim import nu.. 더보기 이전 1 ··· 8 9 10 11 12 13 14 ··· 17 다음