그러한 선언은 void *(*function)()
이 유효합니까? 유효하면 *function
은 호출 된 주소로 모든 함수를 반환합니다. 그 주소에서 반환하는 값은 무엇입니까? 해당 값에서 저장되는 값은 0입니다. 0 인 경우 return 0
의 차이점은 무엇이며 반환 유형이 void
인 함수에서는 아무 것도 반환하지 않습니다.함수에 대한 포인터 및 그 반환 유형 (void)
-1
A
답변
1
다음과 같이 선언 읽기 :
function -- function is a
*function -- pointer to
(*function)() -- function taking unspecified parameters
*(*function)() -- returning pointer to
void *(*function)(); -- void
그래서, function
가 입니다 함수 자체가 아닌 함수 유형에 포인터. 가
if (condition1)
function = foo;
else if (condition2)
function = bar;
else
function = bletch;
void *ptr = function(); // or (*function)();
1
void * (*function)();
의미 표기법 "정해지지 않은 개수의 인수를받는 함수를 가리키는 function
라는 이름의 함수 포인터를 선언는 다음 void *
반환합니다."
을이 단지를 선언 때문에 변수는 함수를 정의하지 않으므로 어떤 값이 반환 될지는 말할 수 없습니다. 호출하기 전에 함수를 가리 키도록이 포인터를 할당해야합니다.
당신은 당신이 function
를 호출하는 경우, 당신은 당신이 주소를 포함하지만, 역 참조 할 수 없기 때문에 "순수 메모리 주소"로 생각할 수있는 void *
을 다시 얻을 것이다, 뭔가를 가리 키도록 function
를 할당 할되면 형형색색이없는 물체에.
void *
을 반환하는 것이 반환 유형이 void
인 함수와 같지 않음에 유의하십시오. 전자 수단 "나는, 메모리 주소를 반환"후자 수단 "나는 전혀 아무것도 반환하지 않습니다."
관련 문제
- 1. void 및 non-void 반환 함수에 대한 완벽한 전달
- 2. void 포인터 및 구조체를 함수에 전달 -C++
- 3. 함수에 대한 포인터 호출하기
- 4. 함수 반환 유형 및 포인터
- 5. 멤버 함수에 대한 포인터
- 6. void 함수에 대한 Mockito - thenCallRealMethod() void
- 7. 함수에 대한 포인터 전달
- 8. 구조와 함수에 대한 포인터
- 9. 함수에 대한 C 포인터
- 10. 함수에 대한 정수 포인터
- 11. 약 void * 및 제네릭 함수에 대한 문제
- 12. c - void * 매개 변수를 사용하여 함수에 대한 포인터 전달
- 13. de-referencing void 포인터 배열에 대한 포인터
- 14. 포인터, 파일 및 함수에 대한 도움이 C
- 15. 멤버 함수에 대한 포인터 - 구문
- 16. void * 포인터에 대한 포인터 연산
- 17. 함수에 대한 포인터 배열에 대한 포인터
- 18. 추출 함수 포인터 인수 및 반환 유형
- 19. 함수에 대한 포인터
- 20. C : char에 대한 포인터 전달 및 반환 *
- 21. 리터럴 상수에 대한 void 포인터
- 22. 포인터 함수 반환
- 23. 글로벌 함수에 대한 로컬 포인터
- 24. 함수에 대한 포인터 배열 C++
- 25. boost :: variant 및 void * 포인터
- 26. 멤버 함수에 대한 포인터 전달
- 27. void 반환 형식의 함수에 대한 테일 호출 최적화
- 28. 함수에 대한 C++ 정적 포인터
- 29. CURLOPT_WRITEFUNCTION 멤버 함수에 대한 포인터
- 30. 구조체 멤버의 void 포인터 및 함수 포인터
* "
당신은 그 각각의 기능을 가리 키도록
function
포인터를 사용할 수 있으며, 전화를하는 런타임에 결정 : 당신은void
에 여러 기능, 각 반환 포인터를 가질 수있다 'void * (* function)()'선언은 유효합니까? "- 컴파일러는이 질문에 대한 최선의 대답을 제공합니다. 예, 유효합니다. 'function'은 인수를 얻지 않고 void 포인터를 반환하는 함수에 대한 포인터입니다. C 선언을 읽는 방법에 대한 자세한 설명은 [이 답변] (https://stackoverflow.com/a/30345939/4265352)을 참조하십시오. – axiac아마도 더 나은 접근 방법은 당신이 이러한 질문을 가지고 있음을 설명하는 것일 것입니다. –