일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 실생활알고리즘
- main 함수 인자 전달
- 고정비트레이트
- image sensor
- 카메라
- 저조도
- Pixel Bit Format
- CS Mount
- 이미지센서
- Digital Slow Shutter
- camera
- 조건 제어문
- Zoom Lense
- ASCCII
- 변수의 초기화와 대입
- 렌즈
- Gain
- AppInventer
- 과초점거리
- Depth of Fileld
- 간단한 앱만들어보기
- 심도
- 프로그래머스 lv2
- 아이리스
- Patch Cleaner
- C Mount
- 무게선별자동화
- 저장소와 동적메모리
- 변수
- c언어
- Today
- Total
목록Langauge/C (28)
카메라 개발자 공부방(SW)
자 오늘은 비트 필드에 대해 공부해볼 시간입니다. C언어에서 연산을 할 수 있는 메모리의 최소 단위가 얼마일까요? 바로~ 1byte입니다. 그런데 이 1byte 보다 작은 단위의 연산을 필요로 하는 경우 어떻게 해야 될까요? 이때 비트 필드가 사용될 수 있습니다. 지금은 메모리 기술이 비약적으로 발전했기 때문에 메모리 자원이 넘치죠? 1byte쯤은 무시할 수 있지만, 과거엔 1byte 마저 소중했기 때문에 bit를 쪼개서 메모리를 관리하였답니다. (임베디드 산업에선 여전히 메모리 리소스가 부족하기 때문에 bit 단위로 쪼개서 데이터에 저장을 합니다. 사용하는 방법을 제대로 알면 유용하게 사용할 수 있습니다.) 비트 필드를 선언하는 방법은 다음과 같습니다. typedef struct bitfield { i..
오늘은 union에 대해 공부해볼 시간입니다. union도 struct와 마찬가지로 기존에 있던 data type을 조합해서 새로운 data type을 정의할 수 있는 사용자 정의 data type입니다. union의 정의는 아래와 같이 합니다. union Point { int x; int y; }; #include union Point { int x; int y; }; int main() { union Point point; point.x = 4; point.y = 4; printf("%d %d\n", point.x, point.y); return 0; } // 실행결과 // 4 4 union을 사용해본 예제입니다. 참 간단하죠? struct와 사용하는 같은 것 같아도 차이점은 있습니다. struct의..
오늘은 main 함수 인자에 대해서 공부를 해보겠습니다. main 함수도 함수기 때문에 인자를 받을 수 있습니다. main 함수의 인자가 전달된다고 할 때, main 함수의 원형은 아래와 같습니다. #include int main(int argv, char** argc) { return 0; } argv는 인자의 수를 의미하고, argc가 가리키는 메모리 안에 문자열 형식으로 저장이 되어있습니다. argc의 첫번째 요소에 저장된 데이터 값은 절대 경로가 포함된 프로젝트의 이름입니다. #include int main(int argv, char** argc) { printf("%d %s\n", argv, argc[0]); return 0; } // 실행결과 // 1, 프로젝트이름 이번에는 main 함수가 여..
오늘은 가변 인자에 대해 배워볼 시간입니다. 가변 인자의 대표적인 함수로는 prinf와 scanf 함수가 있습니다. 함수를 호출하여 인자를 전달할 때, 인자 입력에 제한이 없었죠? printf("%d\n", 1); printf("%d %d\n", 1, 2); printf("%d %d %d\n", 1, 2, 3); printf("%d %d %d %d\n", 1, 2, 3, 4); scanf는 콘솔에서 사용자의 입력을 받는 함수입니다(이제야 소개를 하지만). 이런 함수를 구현해야된다고 생각해봅시다. 인자를 받는 부분을 어떻게 해야 될까요? 이럴 때 생각해볼 수 있는 방법은 가변 인자를 사용하는 것입니다. 아래의 코드를 보시죠 #include void Print(int n, ...) // ... 가변인자입니다..
오늘 배워볼 const란 변수 메모리를 상수화 시키는 연산자입니다. 다음의 코드를 보시죠 #include int main() { const int n = 0; n = 4; } // 실행결과 // compile error occur! n이란 변수가 만들어졌지만, const에 의해서 상수화가 되었기 때문에 초기화 과정에서만 메모리에 데이터를 write 할 수 있습니다. 상수 메모리는 대입 연산이 되지 않습니다. 보통이 변수의 상수화는 1) 상수 목적으로 변수를 사용하는 경우나 2) 참조하는 메모리의 데이터를 read 만 한다면 그 때 사용됩니다. (read 할 목적이라도 포인터 주소를 알고 있기 때문에 충분히 write 할 위험이 있습니다. 그것을 막는 것입니다.) 그리고 상수화 시키는 연산은 const도 ..
오늘은 파일 입출력에 대해 공부해보겠습니다. 파일 입출력은 메모리에 데이터를 직접 쓰는 방식이 아니라, '스트림'을 활용해서 데이터를 입출력합니다. 여기서 스트림이란 1) 순서가 지켜지는 데이터의 흐름 2) 바이트의 흐름을 의미합니다. 이 스트림을 이용하면 입출력 장치뿐만 아니라 DataBase, Network와 Application과 간에 '공통된 인터페이스'로 활용할 수 있습니다. 스트림이 없다면 Application과 Network의 입출력 연동된 코드를 만들어 놔도 다른 DataBase 시스템과 연동을 할 때는 새로운 코드를 작성해야 되는 수고가 늘어납니다. 스트림을 활용한다면, 이러한 고민을 전혀 할 필요 없습니다~! C언어에서 말하는 스트림은 1) 바이트의 흐름을 나타내는 논리적인 단위 2) ..