포인터(bsearch 함수)에 대해 질문입니다.
보아라
안녕하세요#include stdio.h#include stdlib.hint main(void){char *strAry[4]={Boy,Cookie,Hardware,Power};char *srchstr=Cookie;char **srchResult;srchResult=(char **)bsearch((void *)srchstr,strAry,sizeof(strAry)/sizeof(char *),sizeof(char *),Compare);if(srchReuslt==NULL) printf(찾는 대상이 존재 하지 않습니다.\n);elseprintf(찾는 대상 %s가 저장되어 있는 위치:%#x \n,*srchstr,srchResult);return 0;}....int Compare(const void *pkey, const void *pValue){char *key=(char *)pkey; // 여긴 왜 형변환을 캐릭터 형 포인터로 했나요? pkey 변수 앞에 포인터는 왜 없나요?char *value=*((char **)pValue); // 문자열에 대한 주소값을 pValue로 받았는데 왜 포인터를 또 붙여주나요?key와 pkey, value와 pValue에 관해 고수님들의 답변 부탁드립니다.^^ return ....
-
지우개
음...
-
훌림목
char *key=(char *)pkey;
//void* - char*로 변경해준겁니다. *(char)pkey 이건 전혀 다른 의미입니다.
char타입의 변수가 가리키는 포인터입니다만 말이 안되죠.
char *value=*((char **)pValue);
//void * - char ** 이건 왜 이렇게해줬는지 저도 이해하기가 힘드네요.
만약, char*배열자체를 끌어오고 싶었던 거라면 void **가 맞을 것인데 const인 것을보면 그건 아