일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 양평역
- 디자이어HD
- Qt OpenGL
- 정성하
- vuejs
- 윈도우7
- 알람프로그램
- 재귀함수
- QTcpServer
- HTML
- 스타2
- c언어
- Java
- 오토바이
- 잡담
- Qt4
- QT
- FFI
- 바이크
- 안드로이드
- 스타크래프트2
- 자바
- 자료구조
- Qt 소켓프로그래밍
- 고속도로
- qt 설치
- android SAF
- 마영전
- 이륜차
- 엑티브엑스
- Today
- Total
목록프로그래밍/C,C++, Win32Api (28)
프로그래밍과 잡담
WSAStartup@8 찾을 수 없습니다. 라는 에러를 볼 수 있다.. 그것을 해결 하기 위해서는 @pragma comment(lib,"ws2_32.lib") 이걸 하거나 프로젝트 속성의 추가종속성에다가 추가를 해주면 끝난다.
함수 포인터를 안쓴거 같네.. 그래서 쓴다.. 함수 포인터란.. 포인터와 같이 함수를 가르키는 포인터이다.. 일반 적인 포인터는 변수를 가르키지만 함수 포인터는 함수를 가르킨다. 사용법은 간단하다. int add(int a, int b); //이런 함수 가 있다. int (*pAdd)(int,int); //이건 함수 포인터이다. pAdd = add; //이렇게 사용하면 된다. int b = pAdd(5, 6); //결과 b = 11 이렇게 사용하면 된다. 주의 해야 할께 있는데 함수 포인터는 반드시 원형에 맞춰서 만들어야한다. void (*pAdd)(int,int) // 이렇게 하면 안된다. 마찬 가지로 int (*pAdd)(double,int) //이렇게 써도 안된다.
이건 자바에도 공통이다.. 오버로딩이란? int max(int x, int y) { if( x > y) return x; else return y; } 이런 함수가 있다 치면 이걸 오버로딩을 하면 이리 된다. float max(float x, float y) { if( x > y) return x; else return y; } 이렇게 하는게 오버로딩이다. 이름은 같은데..하는 짓이 틀린게 오버로딩 오버라이딩은 상속을 받으면 상속 받은 메소드를 바꾸는 짓을 오버라이딩이라 한다. class Point { public: int max(int x,int y); }; class A : public Point { public: int max(int x, int y) { return x; } } 이런걸 오버라이딩이..
재귀 함수란? 자기 자신을 자기가 호출을 하는걸 보고 재귀 함수한다. 예제) void t( ) { t(); } 예제와 같은 형태를 가진 함수를 보고 재귀함수한다. 물론 저렇게 실행하면 무한루프에 빠져서 컴이 에러난다. 재귀함수를 사용할때는 함수의 끝나는 조건을 잘 써야한다. 종료 조건을 제대로 안하면 무한 루프에 빠져서 프로그램이 멈춘다. 재귀 함수의 장점은 함수가 간략해 진다는 장점이 있는데 단점은 햇갈린다. 자기가 자신을 호출하다보니 햇갈리는 문제가 생긴다. 예제) int power(int i, int n) { if( n == 1) return i; else return power(i*2,n-1); } 위에 예제는 2^n 을 하는 재귀 함수이다. 재귀함수는 상당히 보기가 짜증나기 때문에 공책을 준비 ..
동적 할당(Memory Allocation) 자 인제 이것만 하면 다 한거 같네.. 동적할당 프로그래머가 필요할때 메모리에 올리고 지울때 사용하는게 동적할당이다. (데이터타입*)malloc(sizeof(크기)) 위에 처럼 사용하면 된다. *표는 오타가 아니라 포인터로 반환한다는거다. 아 그러고 보니 형변환 안했네.. 뭐 그냥 지금 하지 ***************************************** 형변환 형변환 하는거 쉽다 위에서 써 놓은거 처럼 '( )' (캐스트연산자) 여기다가 데이터타입을 넣으면 데이터 타입이 일시적으로 변환된다. 계속 바뀌는것이 아니다. int i = 43; printf("%c", (char)i)); 위에 처럼 사용하면된다 i를 char형으로 형변환한거다. 묵시적 형변..
Call by Value & Call by Reference Call by Value 와 Call by Reference를 쓰겠다.. 함수에서 Call by Value 와 Call by Reference 라는게 있다.. 책들 보면 Call by Value 와 Call by Reference 를 설명하는거 보면 대부분은 swap이라는걸 쓴다.. 고로 나도 쓴다. 이유는 그냥 보여주기 쉬우니까.. 예제 ) void swap(int a); void swapt(int* a); int main() { int a = 0; int b = 0; printf("before swap() %d \n",a); swap(a); printf("after swap() %d \n",a); printf("before swapt() %..
함수(function) 함수란 사전에서 보면 기능이란 뜻이다. printf 함수 이건 콘솔창에 메시지를 띄우라는 함수다. 이러한 기능을 가진걸 함수라 한다. 함수를 사용하는 이유는 그냥 main 함수 안에다가 다 넣어버려도 작동은 아주 잘 된다. 근데 그렇게 하다보면 메인이 엄청 길어져서 보기도 나쁘고 나중에 유지보수하는데 어려워지게 때문에 함수라는걸 만들어서 여러게로 쪼개서 사용한다. 함수의 사용법도 다른거와 마찬가지로 쉽다. 함수의 형태 리턴타입 함수이름 ( 인자 ) { 내용부 } 리턴 타입은 int 와 같은게 있을 수 도 있고 배열이 있을 수도 있고 구조체가 있을 수도 있다.. 즉, 프로그래머 마음대로 원하는 타입을 설정하면된다. 단! 한개의 타입만 리턴된다. 이런거 없다. int,char fnc(..
구조체 [Structure] 구조체는 여러가지의 데이터타입들의 집합을 구조체라 한다. 배열과는 틀리다.. 배열은 같은 형태의 데이터타입들의 집합이지만 구조체는 int, float ,char 이렇게 여러가지로 만들어진 집합체이다. 구조체의 사용법은 간단하다.. struct 구조체 이름 { 내부내용 }; 예제) struct structure { char c; int i; float f; double d; }; 위에 예제와 같이 하면 된다. 함수 안에다가 설정하면 안된다. 함수 밖에다 만들어야 한다. 사용법 사용법은 위에 처럼 만들었으면 이렇게 사용하면 된다.. 예제) void main() { struct structure s; } 위에 처럼 일반적인 변수 선언을 하는것 처럼 하면 된다. 그러면 내부에 있는 ..
다중 포인터. 다중 포인터 이것도 사용하는 방법은 포인터와 같다. int **p; 이렇게 하면 2중 포인터가 된다.. 2중이나 3중은 좀 쓰는데 4중이나 5중같은거는 거의 안쓴다.. 이유는 머리 아프니까.. 2중 포인터의 예제 int p = 1; int *ap; int **app; ap = &p; app = ≈ printf("p의 값 %d \n", p); printf("p의 주소 값 %x \n",&p); printf("ap의 값 %d \n", *ap); printf("ap의 주소 값 %x \n",ap); printf("app의 값 %d \n", **app); printf("app의 주소 값 %x \n",app); 출력 결과 p의 값 1 p의 주소 값 12ff60 ap의 값 1 ap의 주소 값 12f..
포인터 연산 포인터도 연산이 가능하다. 막 아무거나 가지고 연산하면 이상한걸 가르키기 때문에 연산을 할때는 배열같은걸 사용할때 사용한다.. 배열의 이름은 포인터라 했다.. 물론 1차원 배열일때만이다.. 2차원으로 가면 좀 틀려진다.. int array[5]; int *pa; // pointer array라는 줄임이다. pa = array; 위에 처럼 하면 pa는 array의 주소값을 가지게 된다.. 정확히는 array[0]의 주소값을 가지게 된다. 이걸 가지고 포인터 연산을 한다.. pa++를 하면 pa = pa + 1; 이라는 의미이다.. 여기서 1이라는 의미는 int 형의 크기만큼 이동한다는 소리다.. 뭔 소리인가 하면 그림으로 설명.. 자 pa = array;를 한 상태의 그림이다 .. 그 다음 그..