게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
포인터 쉽게 이해하기.
게시물ID : programmer_973짧은주소 복사하기
작성자 : 황금비
추천 : 2
조회수 : 934회
댓글수 : 7개
등록시간 : 2014/02/02 23:15:13
포인터가 어려운 것은 아마도 사용 방법 때문인 것 같습니다.

c언어 처음 배울 때 포인터 공부할 때 포인터라는 것이 단순하게 걍  장치, 코드, 또는 메모리 주소 라는 것을 확인하려고 만들었던 예제입니다.

#include < stdio.h>

// 테스트 함수
void func()
{
printf(" function pointer call \\n");
}


// 함수 포인터 호출 함수
void test_call(void* v)
{
// 특수하게 인수가 함수의 주소로 가정하고 강제로 캐스팅 후 호출.
((void (*)())v)(); //__asm { call v }
}


int main(int, char**)
{
int v=0x1234;
int (*p); // 포인터
int (**pp); // 이중 포인터

p   = &v;
pp  = &p;

printf("address: ------------------------------- \\n");

printf(" val:  0x%X \\n",  v);
printf(" add:  0x%X \\n", &v);

printf("포이터 참조(&), 역참조(*): ------------ \\n");

printf("   *p: 0x%X \\n",   *p);
printf("    p: 0x%X \\n",    p);
printf("   &p: 0x%X \\n",   &p);
printf("  *&p: 0x%X \\n",  *&p);
printf(" **&p: 0x%X \\n", **&p);

printf("이중 포이터 참조(&), 역참조(*): ------- \\n");

printf(" **pp: 0x%X \\n", **pp);
printf("  *pp: 0x%X \\n",  *pp);
printf("   pp: 0x%X \\n",   pp);
printf("  &pp: 0x%X \\n",  &pp);


printf("function pointer: ---------------------- \\n");

void (*cc)(void) = func; // 함수 포인터에 함수 주소 저장
printf("func add: %p \\n", cc); // 함수의 주소 출력

test_call(cc); // 함수의 주소를 인수로 전달

return 0;
}

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호