두 번 void
포인터를 사용하려고하는데 사용법에 대해 조금 혼란 스럽습니다. void **
배열을 포함하는 struct
이 있습니다.void ** 포인터를 올바르게 사용하는 방법은 무엇입니까?
struct Thing{
void ** array;
};
struct Thing * c = malloc (sizeof(struct Thing));
c->array = malloc(10 * sizeof(void *));
그래서 각 포인터에 다른 객체를 할당하고 값을 검색하려고 할 경우
// Option 1
*(c->array + index) = (void *) some_object_ptr;
// Option 2
c->array[index] = (void *) some_object_ptr;
후, 나는 각 셀이 아닌 some_object_ptr
를 가리키는 (void *) item
을 제공합니다 다른 기능을 가지고 .
내가 some_object_ptr
가 가리키는 값을 검색하려면,
는 어떻게해야
function return type is 'void *' and takes argument 'void *'
// Option 3
return (void**) item
// Option 4
return *((void**)item)?
이상한 것은 내가 배열을 사용하는 경우 배열 첨자 방법은 내가 옵션 4를 사용할 수 없다는 것입니다, 유일한 옵션 3; 그리고 내가 *(c->array + index)
을 사용할 때 나는 opt.4 만 사용할 수있었습니다. 하지 opt.3. ..
아무에게도 이것에 대해 말해 줄 수 있습니까? 내가 잘못된 가정을하고 있다면, 제발 저를 시정 해 주시겠습니까?
이 왜'무효 *'로 작업하는 자리 확보/패배의 조심? 더 나쁜,'무효 **'? – Kevin
아마도 그 사람이 필요로할까요? –
또한 옵션 3과 4는 같지 않습니다. 3은'void **'를 반환하고 4는'void *'를 반환합니다. 'item'이란 정확히 무엇입니까? – Kevin