일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 카메라
- Zoom Lense
- 과초점거리
- 이미지센서
- main 함수 인자 전달
- 실생활알고리즘
- 변수의 초기화와 대입
- Depth of Fileld
- camera
- C Mount
- 아이리스
- 조건 제어문
- image sensor
- 저장소와 동적메모리
- CS Mount
- 무게선별자동화
- Patch Cleaner
- Pixel Bit Format
- 저조도
- 프로그래머스 lv2
- 고정비트레이트
- ASCCII
- Digital Slow Shutter
- 심도
- 변수
- c언어
- Gain
- 렌즈
- 간단한 앱만들어보기
- AppInventer
- Today
- Total
목록전체 글 (49)
카메라 개발자 공부방(SW)
다음은 함수 포인터에 대해 공부해보겠습니다. 함수가 익숙하지 않으시다면 사용자 함수 부분을 꼭 복습해주세요. 다음 코드를 보시겠습니다. #include void Print() { printf("%p\n", Print); } void Add(int x, int y) { printf("%d+%d=%d\n", x, y, x + y); } int main() { printf("%p\n", Print); printf("%p\n", Add); printf("%p\n", main); return 0; } // 실행결과 // function address // function address // function address 함수의 이름은 그 함수의 시작 주소입니다. 함수의 이름도 포인터기 때문에 포인터 변수에 저장할..
오늘은 void*에 address type에 대해 공부를 해보겠습니다. address type이 void*란 의미는 어떠한 형식의 address type도 저장시킬 수 있다는 걸 의미합니다. (다시 말하면 int*, int**, char* 이든 모두 저장시킬 수 있다는 의미인데요.) 이것이 왜 필요할까요? malloc을 생각해봅시다. malloc()은 heap 영역에 메모리 공간을 할당하고 그 시작 주소를 반환하는데요. 이 반환 type 또한 void*입니다! (익숙하지 않으시다면 저장소와 동적 메모리 파트를 꼭 복습해주세요.) 메모리의 반환은 void* 이지만 프로그래머가 원하는 목적에 따라 메모리 type을 지정해서 사용할 수 있었습니다. 컴퓨터 입장에선 메모리를 할당 했지만 사용자가 어떠한 addr..
오늘은 2차원 배열에 대해 공부를 해보겠습니다. 배열과 포인터의 사용이 익숙하지 않으시다면 앞장의 배열과 포인터 부분을 꼭 복습해주세요! 우리는 앞서 배열은 앞서 많은 변수를 다루기 위한 메모리 공간이라 배웠습니다. 그때 배웠던 배열은 1차원 배열입니다. 그림으로만 봐도 할당된 메모리 공간을 메모리가 1차원으로 저장 관리되는 것을 알 수 있는데요! 2차원 배열은 차원이 2개인 배열이라 생각해주시면 됩니다. dataType arrayName[size][size]; 앞의 인덱스는 행을 의미하고, 그 뒤의 인덱스는 열을 의미합니다. 1차원 배열을 공부할 때, 배열의 이름은 첫 번째 요소의 주소다라고 배웠습니다. 그런데 2차원의 경우도 마찬가지지만 조금은 특이한데요. int arr[4][4] = {0}; arr..
자 다음은 구조체에 대해 공부해볼 시간입니다. 우리는 앞장에서 data type과 변수에 대해 공부를 했었습니다. 그런데 코딩을 하다 보면 연관 있는 변수끼리 묶어서 관리하면 굉장히 편할 때가 있는데요. 이럴 때 구조체가 사용될 수 있습니다. 다음 코드를 보겠습니다. #include int main() { int x = 2 ; int y = 4; printf("%d, %d\n", x, y); return 0; } x와 y는 좌표를 의미하기 때문에 따로 사용될 때는 전혀 의미가 없는 값들입니다. 구조체를 사용하면 다음과 같이 선언할 수 있습니다. struct Point { int x; int y; }; #include struct Point { int x; int y; }; int main() { stru..
자 오늘은 저장소에 관한 내용과 동적 메모리에 대해 이야기해보겠습니다. 프로그램은 적절한 명령을 통해 주어진 데이터로 가공해서 원하는 결과를 내는 것이 주 역할입니다~! 그런 의미에서 프로그램은 큰 범주에서 명령어와 데이터로 나눌 수 있습니다. 프로그램에 따라 데이터는 1) 잠깐만 필요한 경우가 있고, 2) 프로그램 전반에 메모리가 필요하거나 3) 프로그램이 종료되더라도 계속 살아있어야 되는 경우가 있습니다. 1) 메모리가 잠깐만 필요한 경우 - 연산 과정 중에 나오는 결과를 저장해야 되는 경우 2) 프로그램 전반에 메모리가 필요한 경우 - 메모리가 계속 살아있어야지만 application을 운용할 수 있는 경우 3) 프로그램이 종료되더라도 살아있어야 되는 메모리인 경우 - 파일에 저장된 데이터 - Da..
오늘은 아스키코드에 대한 이야기를 해보겠습니다. 문자를 표시하기 위해서 프로그래밍 언어에선 특정 비트를 어떤 문자로 표현할지 미리 다 약속이 되어있답니다. 예를 들어 1100001는 'A' 문자 ~ 그다음 1100002는 'B' 문자 그다음 1100003는 'C' 문자라고 이미 다 약속이 되어 있는데 그것을 정리한 표가 ASCII 테이블입니다. ASCII는 미국정보교환표준부호의 약자로 미국 표준 협회(ASA)가 주도한 x3 위원회가 개발하고, 표준화가 되어서 현재 까지 널리 사용 중에 있습니다. 아스키코드는 위의 표와 같이 출력 가능한 문자와 아래와 같이 그렇지 못한 문자들의 집합으로 구성됩니다. 이번에는 코드를 보겠습니다. #include int main() { char val = 'A'; printf..