C 언어의 다음 유형의 포인터 선언의 차이점은 무엇입니까?C 언어의 포인터 선언을 이해하는 데 도움이 필요합니다.
int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),
적절한 설명을 위해 몇 가지 예가 추가 된 경우 매우 유용합니다.
C 언어의 다음 유형의 포인터 선언의 차이점은 무엇입니까?C 언어의 포인터 선언을 이해하는 데 도움이 필요합니다.
int *p(int a),
int (*p)(int a),
int *(*p)(it(*a)[]),
적절한 설명을 위해 몇 가지 예가 추가 된 경우 매우 유용합니다.
int *p(int a);
나는 그것이 포인터 선언임을 강력히 의심합니다. 더 잘 작성된 경우 함수은 int
이고 int
에 대한 포인터를 반환한다는 것을 이해할 수 있습니다.
int (*p)(int a);
기본 함수 포인터. p
은 int
을 사용하고 int
을 반환하는 함수를 가리 킵니다. 예를 들어이 무효이기 때문에
int foo(int x) { return x+1; }
p = &foo;
마지막 하나는 비트 복잡하다. 괄호 안에 숫자가 있어야합니다. 나는 그것이 다음과 같이 (오타를 포함하여) 수정되었다고 가정한다.
int *(*p)(int(*a)[3]);
는 함수 포인터 함수 int
3 개의 배열에 대한 포인터를 취하고, int
포인터를 리턴이다. 예를 들어
int *extract_first(int (*a)[3]) {
return (*a);
}
p = &extract_first;
'3 '을 추가해야 할 필요가 있습니까? 나는 그것이 C++에 대해서만 정확하다고 생각하지 않는다. – 4386427
첫 번째 FA 함수 선언, 그것은 int를 취하고 포인터 투 INT, 번째 인을 반환하는 함수 포인터 int를 복용하는 int 경우] 반환 제 했어야 :
int * (*p) (int(*a)[]);
그것은 취하는 함수 포인터이다 포인터 투 AN-INT-의 배열 및 포인터 투 INT 복귀.
https://cdecl.org/를 입력하고'a' 예제없이 표현식을 입력하십시오 :'int * (* p) (int (*) [])' – 4386427
세 번째 하나는 그것을 사용하지 않는 것입니다. 그렇게하면 코드 검토 직후에 해고 당할 가능성이 있습니다. –