C
-
[C] 230807 MIL 도형조작, 리스트, BMP파일, 멀티쓰레드, 뮤텍스C 2023. 8. 7. 13:39
bunbun92/C_Practice_new (github.com) GitHub - bunbun92/C_Practice_new Contribute to bunbun92/C_Practice_new development by creating an account on GitHub. github.com 약 한달간 도형 메모리에 그리고 다양하게 변형하기, 리스트 만들기, bitmap 이미지 파일 불러오고, 다양하게 변형하고, 유사도 찾기 등 이미지 파일 다루기, 조합 출력하기, 멀티쓰레드 열고 뮤텍스, 세마포어 이용하기 등 다양하게 공부하고 휴가도 받아서 푹 쉬었었다
-
[C] 230711 TIL // heap 구현C 2023. 7. 11. 13:49
#include #include #include "heap_tools.h" void heap_init(Heap* h){ set_header(h->pool, 'f', MaxHeapL - 5); memset(h->head, 0, MaxHeadL); } char** heap_alloc(Heap* h, int sz){ char* p= 0; if (p = find_free(h, sz)){ set_header(p+(sz+5), 'f', *((int*)(p+1)) - (sz+5)); set_header(p, 'a', sz); } return head_push_back(h, p); } void heap_free(Heap* h, char** p){ set_header(*p, 'f', *((int*)((*p)+1))); ..
-
[C] 포인터 변수 a의 (*a)++ / a++ 차이C 2023. 7. 5. 14:18
(*a)++; 는 a가 가르키는 값을 증가 a++;는 a에 담긴 주소를 증가 short* a; short b = 2; a = &b; // 포인터 변수 a에 b의 주소를 할당해서 b를 가리킴 (*a)++; // a가 가리키는 b의 값을 증가 a++; // a의 주소를 증가 포인터 변수는 모두 4바이트를 할당받는다. char*든 short*이든 void*든 int*든. 그 안에 주소를 저장하는데, 마지막 코드인 a++; 에 대해 정리할 것이 있어서 정리해보려고함 (*a)++; 가 실행되면 b가 1 증가되어 3이 되는데. a++가 실행되면 어떨까? a에 담긴 주소가 8이었다면, 1이 증가되어 9가 되는건가? 결론은 2(short의 바이트 크기)가 증가해서 10이 된다. 변수가 할당되는 메모리는 1byte 단위..
-
[C] 부호를 고려하는 타입 이진수 범위C 2023. 7. 5. 14:03
char 타입과 short, int 등 타입들은 unsigned가 아니기에 이진수에서 부호를 고려한다 예를들어 1byte인 char 자료형의 경우 1111 1111 ~ 0111 1111 의 범위고, 맨 왼쪽자리의 이진수가 1로 음수, 양수를 표현한다 그냥 십진수로 범위를 간단히 풀어서 보면 -128 ~ 127 인데, 1111 1111이 왜 -128인가 하고 생각이 났었음 일반적인 이진수의 경우는 1111 1111 이 127이니까. 근데 조금만 생각해보니 0 000 0000은 0이지만, 1 000 0000은 -1이기 때문에 음수쪽이 하나 더 많은게 맞다.