반응형

POINT 3

포인트 함수 < 포인트로 함수를 호출하는 방법>

#include #include #include typedef int (*msgFuncPtr) (void *param1); int Sum(void* ptMsg);typedef struct _FUNC_PTR { msgFuncPtr func; }Func_ptr;typedef struct _TMEP { int a; int b; }Temp;int main() { Func_ptr stFuncPtr; Temp* ptTemp = new Temp; ptTemp->a = 2; ptTemp->b = 3; stFuncPtr.func = Sum; // 호출할 함수가 Sum이라는 것을 설정 stFuncPtr.func(ptTemp); // Sum 함수를 호출하는 부분 return 0; }int Sum(void* ptMsg) { ..

C, C++ 2019.01.23

더블 포인터란 무엇인가? (double point)

더블 포인터란 무엇인가? 말 그대로 포인터연산자인 * 표시가 2개 붙어 있는 것이다. 예를 들어 int **ptr; 이정도로 해두면 될것이다. 더블 포인터와 싱글 포인터 차이점...........?? 싱글포인터는 해당 변수의 주소값을 지니고 있다. 또한 싱글 포인터 역시 포인터 변수이다. 그러므로 이 싱글 포인터 변수 역시 4byte의 메모리 공간을 할당받는다. 이 실글 포인터가 할달 받은 공간을 가르키는것이 더블 포인터이다. 즉 싱글 포인터의 주소값을 가지고 있는 것이다. 예를 들어int val=1;int *ptr1 = &val; -> 싱글 포인터int **ptr2 = &ptr1; -> 더블 포인터:: ptr1은 val의 주소값을 지니고 있고 ptr2는 ptr1의 주소값을 지니고 있는 것이다. ptr2..

C, C++ 2019.01.23

포인터와 const

포인터와 const 키워드포인터를 const키워드로 상수화 시킨다는 것은 2가지 의미를 가진다.1.포인터가 가르키는 변수의 상수화 ex1) int a =10; const int *p = &a; *p =30; //error a = 30; //ok 위의 예제를 보면 const키워드의 위치가 int 앞에 나와있다. 이는 *p가 a라는 변수를 상수화한다는 의미를 나타낸다. p라는 포인터가 봤을때 변수 a가 상수처럼 보인다는 뜻이다. 위 코드를 보면 *p =30; 는 error 메세지가 나오고 a = 30 는 통과된다. 이는 변수 a가 지니는 값을 상수화 한다는 것이 아니라 위에 말한 변수 a를 상수화 하기 때문에 그렇다. 즉 a값을 변경하는 것을 막는 것이 아니라 포인터를 통해 접근 하였을 때만 막는것이다.2...

C, C++ 2019.01.23