본문 바로가기 메뉴 바로가기

공부합시당

프로필사진
  • 글쓰기
  • 관리
  • 태그
  • 방명록
  • RSS

공부합시당

검색하기 폼
  • 분류 전체보기 (44)
    • Coding (22)
      • C (19)
      • 알고리즘 (3)
    • 영상처리 (22)
      • OpenCV (22)
  • 방명록

Coding/C (19)
const 위치 별 의미

int const * p; // 1 int * const p; // 2 int const * const p; // 3 const int * p; // 4 p = (int *)0x1000; // 가 p++; // 나 *p = 100; // 다 a = *p; // 라 const는 위치에 따라서 의미가 헷갈린다.const는 후식이다. (앞에 있는 애를 상수화) 따라서 1번 - int2번 - *3번 - int, *4번처럼 맨 앞에 붙은 경우 예외적으로 뒤를 상수화시킨다. int 결국1번 - 값 2번 - 주소3번 - 주소, 값4번 - 값변경이 불가 번호 별 불가능한 것은?1 - 다 (나 번은 p++은 포인터의 주소 변경이다. 가능함)2 - 가, 나3 - 가, 나, 다4 - 다

Coding/C 2018. 6. 25. 20:52
함수 포인터 인자와 리턴 - 5

#include // 40을 출력하려면? int *f1(void) { static int a[4] = { 1,2,3,4 }; return a; } int *f2(void) { static int a[4] = { 10,20,30,40 }; return a; } int *(*fa[2])() = { f1, f2 }; int f4(void) { return 1; } ?? func1(void) { return fa; } ? ? func2( ?? p ?? ) { return func1()[p()]; } void main(void) { printf("%d\n", func2(f4) ? ? ); } /* int *f1(void) { static int a[4] = { 1,2,3,4 }; return a; } int *f..

Coding/C 2018. 6. 9. 15:26
함수 포인터 인자와 리턴 - 4

#include struct _st { int num; char * name; }; // ARK를 인쇄하려면? ? ? f2(void) ? ? { static struct _st a[2][3] = { {1,"KIM"}, {2,"SONG"}, {3, "KI"} }, { {4, "KANG"}, {5, "PARK"}, {6, "LEW"} }}; return a; } ? ? f1(int num) ? ? { return f2()[num]; } void main() { printf("%s\n", f1(0)); } /* // a -> struct _st [2][3] -> 배열이니 [2]를 포인터로 struct _st(*f2(void))[3] { static struct _st a[2][3] = {{{ 1,"KIM" }..

Coding/C 2018. 6. 9. 15:02
함수 포인터 인자와 리턴 - 3

#include ? ? f2(void) ? ? static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; return &a; } ? ? f1(void) ? ? return f2()[0]; } void main() { printf("%d\n", f1 ??); system("pause"); } /* // a -> int [3][4] // &a -> int (*)[3][4] int (*f2(void))[3][4]{ static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; return &a; } // f2() -> &a 리턴 // f2()[0] -> a int (*f1(void))[4]{ return f2()[0]; } // f1() ->..

Coding/C 2018. 6. 9. 14:47
함수 포인터 인자와 리턴 - 2

#include ? ? f2(void) ? ? static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; return a; } ? ? f1(void) ? ? return f2()[2]; } void main() { printf("%d\n", f1 ??); system("pause"); } /* int(*f2(void))[4]{ static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; return a; } // f2는 int (* (void))[4] 를 리턴한다. // f2()의 타입은 int (*) [4] // f2()[2]의 타입은 int [4] // 배열 상태이기 때문에 int *로 변경한다. int(*f1(void)) { re..

Coding/C 2018. 6. 9. 14:32
함수 포인터 인자와 리턴

#include ?? f2(void) ?? static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; return a; } ?? f1(void) ?? return f2; } void main() { printf("%d\n", f1()()[1][2]); system("pause"); } /* int (*f2(void))(int) { static int a[3][4] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; return a; } // f2 또한 함수이기 때문에 * 하나 추가하는 것을 실수하지 말 것 int (*(*f1(void))(void))[4]{ return f2; } */

Coding/C 2018. 6. 9. 14:14
함수 리턴 및 메모리 접근

#include int a[2][3] = { {1,2,3},{4,5,6} }; int b[2][3] = { { 10,20,30 },{ 40,50,60 } }; int(*c[2])[3] = { b, a }; int(**p)[3] = c; int (*f1(void))[3]{ return c[1]; } int (*(*f2(void)))[3] { return c + 1; } int(*f3(void)){ return a[0] - 1; } int(**f4(void))[3]{ return p; } int(*(*f5(void))[2])[3]{ return &c; } // 6을 출력하려면? int main() { printf("%d\n", f1()[1][2]); printf("%d\n", f2()[0][1][2]);//..

Coding/C 2018. 5. 28. 21:28
함수 parameter 및 메모리 접근 연습

#include int a[2][3][4] = { {{1,2,3,4},{5,6,7,8},{9,10,11,12}}, {{10,20,30,40},{50,60,70,80},{90,100,110,120}} }; // 100을 출력하려면? void f1(int *p) { printf("%d\n", p[17]); } void f2(int (*p)[4]) { printf("%d\n", p[-1][1]); } void f3(int (*p)[3][4]) { printf("%d\n", p[1][2][1]); } void f4(int (*p)[3][4]) { printf("%d\n", p[-2][2][1]); } void f5(int (*p)[2][3][4]) { printf("%d\n", p[0][1][2][1]); } ..

Coding/C 2018. 5. 28. 20:51
type 분석 연습

#include int main() { int *p = malloc(sizeof(int)); printf("%#.8x\n", p);// p가 가리키는 주소 printf("%#.8x\n", p + 1);// 4byte 증가 printf("%#.8x\n\n", &p + 1);// p가 저장된 주소 + 4byte int a[4]; printf("%d\n", sizeof(a));// 16 printf("%#.8x\n", a); printf("%#.8x\n", a + 1);// 4byte 증가 printf("%#.8x\n", &a);// a와 동일 printf("%#.8x\n\n", &a + 1);// 16byte 증가 char **p2 = (char**) malloc(100 * sizeof(char*)); pr..

Coding/C 2018. 5. 27. 11:56
포인터 타입에 따른 메모리 접근..

#include int a[12] = { 1,2,3,4,5,6,7,8,9,10,11,12 }; int main() { int *p = a; char *q = (char *)a; int(*r)[4] = (int(*)[4])a; int(*s)[3] = (int(*)[3]) a; int(*t)[2][3] = (int(*)[2][3])a; printf("%d %d\n", p[0], p[1]);// 1 2 printf("%d %d\n", q[0], q[1]);// 1 0 -> little endian 구조 생각하며... 10 00 00 00 저장 printf("%#.8x , %#.8x\n", r[0], r[1]);// 1000 1010 printf("%#.8x , %#.8x\n", s[0], s[1]);// 10..

Coding/C 2018. 5. 26. 17:18
이전 1 2 다음
이전 다음
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
  • pyrUp
  • canny operator
  • canny
  • 영상처리
  • 캐니 엣지
  • equalizing
  • morphological operation
  • gradient
  • pyrDown
  • black top hat
  • hough transform
  • median filter
  • direction detection
  • morphology
  • upsampling
  • bilateral filter
  • difference of gaussian
  • dilation
  • top hat
  • adaptive thresholding
  • laplacian of gaussian
  • Sobel
  • OpenCV
  • mean filter
  • Line Detection
  • Filter
  • Low pass filter
  • erosion
  • high pass filter
  • segmentation
more
«   2026/02   »
일 월 화 수 목 금 토
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
글 보관함

Blog is powered by Tistory / Designed by Tistory

티스토리툴바