본문 바로가기

분류 전체보기311

[아두이노] ESP-32 Cam, 포트포워딩을 이용한 CCTV 내가 알리에서 산건 esp-32s espressif 이거였다. AI Thinker로 업로드 하니 작동이 잘됐다. 참조 : randomnerdtutorials.com/esp32-cam-video-streaming-face-recognition-arduino-ide/ 2021. 1. 30.
[자료구조] Single Linked List 사용법, 동적할당 대신 사용할 수 있는 배열 #include #include using namespace std; int arr_idx = 0; struct NODE { int v; NODE* prev; // Single list를 위해 추가. } a[100000000]; NODE* myalloc(void) { return &a[arr_idx++]; } int main(void) { NODE* pList = NULL; // Single linked list의 시작 NODE* p; arr_idx = 0; // 배열 초기화 //첫번째 노드(1) 추가 p = myalloc(); p->v = 1; p->prev = pList; pList = p; //두번째 노드(2) 추가 p = myalloc(); p->v = 2; p->prev = pList; pLis.. 2021. 1. 28.
[C언어] 구조체 포인터 .연산자 ->연산자 구조체 포인터라고 해서 어렵게 생각할 필요가 전혀 없다. 보는 눈만 키워주면 되는 것이다. 구조체는 하나의 자료형이라고 생각하면 되기 때문에, 포인터를 선언할 때에도 똑같이 선언하면 된다. struct 구조체이름* 포인터이름; 보통 구조체 내부에는 여러개의 자료형이 들어가있기 때문에 구조체를 일일히 선언해서 사용하기 보다 포인터로 주소를 할당에서 사용을 많이한다. struct 구조체이름* 포인터이름 = malloc(sizeof(struct 구조체이름)); 예제로 아래는 Hash의 insert 함수이다. void insert(int key, int value){ int hashIndex = hashFunction(key); struct node *newNode = createNode(key,value); .. 2021. 1. 24.
[C언어] 구조체란 무엇인가. 프로그래머라면, 구조체라는 말을 굉장히 많이 들어보았을것이다. 그렇다면 이 구조체란 무엇인가? 구조체는 구조화된 데이터를 처리할 때 만들어서 사용하고, 다른 자료형을 배열처럼 하나의 묶음으로 묶어서 사용할 수 있도록 해주는 기능이다. 쉽게 말하자면, 김밥이다. 어묵, 단무지, 김, 밥 등 각자의 재료를 따로 모아놓은게 배열이라면, 구조체는 이 모든것들을 모아놓은 김밥 같은 것이다. 예제는 아래와 같다. #include struct kimbap { char danmuji[10]; int ham; float eumok; double kim; }; typedef struct kimbap kimbap; int main(void) { kimbap a = { "hihihi", 5, 3.1, 100000.3 }; p.. 2021. 1. 19.
[C언어] typedef 이란 무엇인가 typedef 이란 이미 사용되는 자료형을 다른 새로운 자료형 이름으로 재정의 할 수 있도록 하는 키워드이다. 쉽게 말하자면, 자료형에 별명을 붙혀주는 것이다. typedef int hihi; hihi a = 10; // hihi는 int형 이런식으로 표현할 수 있게 된다. 여기까지는 너무 쉽다. 그럼 typedef를 왜 쓸까? 구조체의 이름이 길거나, 프로그램 확장성을 위해 사용한다. 만약 int가 4바이트로 할당되는 개발환경을 사용하다가, int가 2바이트로 할당 되는 개발환경으로 갑자기 바꿔야한다면 일일히 모든 코드의 자료형을 수정해야 할 것이다. 하지만 typedef로 선언해 놓는다면, 1줄만 수정하면 된다. 아래는 위키백과에서 퍼온 typedef의 정보이다. typedef는 C와 C++ 프로그래.. 2021. 1. 19.
[C언어] 배열포인터와 포인터배열의 차이 코딩을 하다보면 가끔씩 포인터를 쓸 일이 있다. 그런데 항상 배열포인터와 포인터배열을 헷갈린다. 배열포인터 : Pointer To Array 배열을 가리키는 포인터 포인터배열 : Array Of Pointer 포인터들의 배열 우선 각각의 사용법을 알아보겠다. 1차원 배열 2차원 배열 (배열포인터) 2차원 배열 (포인터배열) int arr[3] = {1, 2, 3, 4, 5}; int *ptr = arr; int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int (*ptr)[3] = arr; int arr[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; int *ptr[3] = arr; 알다시피 1차원 배열은 헷갈리지 않고 선언 할 수 있다. 하지만 배열포인.. 2021. 1. 16.