구성 요소 선택에서 구조체 반환 함수의 이점은 무엇입니까? 예를 들어 :구조체 반환 함수
struct S {
int a, b;
} x;
이유는 아래 그림과 같이 내가이 일을 어떤 혜택이 있습니까 함수로 위의 구조체를 할당 할 수있다?
extern struct S f(); /* Why is this neccesary? */
x = f(); /* Is this accurate */
내 눈을 열어주세요.
구성 요소 선택에서 구조체 반환 함수의 이점은 무엇입니까? 예를 들어 :구조체 반환 함수
struct S {
int a, b;
} x;
이유는 아래 그림과 같이 내가이 일을 어떤 혜택이 있습니까 함수로 위의 구조체를 할당 할 수있다?
extern struct S f(); /* Why is this neccesary? */
x = f(); /* Is this accurate */
내 눈을 열어주세요.
이것은 단지 struct
을 반환하는 함수입니다. 그것보다 더 중요한 것은 없습니다. 함수가 int
을 반환하는 것을보고 놀라지 않을 것입니다. 구조체를 반환 할 때 왜 놀랍습니까?
제쳐두고, extern
은 함수의 기본 저장소 클래스이기 때문에 여기에 불필요합니다.
포인터 대신 구조체의 복사본을 얻는다면 free()
에 대해 걱정할 필요가 없으며 다른 스레드가 구조체에 쓰는 동안 하나의 스레드가 구조체에 쓰는 데이터 경주가 있는지 걱정할 필요가 없습니다. 또는 함수에 의해 리턴 된 포인터가 사용자 제어 외부에있을 수있는 일부 조치로 무효화 될지 여부를 지정합니다.
함수에서 여러 값을 반환 할 수 있으므로 유용합니다.
예를 들어, 다음과 같이 사용할 수있는이
struct Point {
int x;
int y;
};
struct Point getMousePos()
{
struct Point pos;
pos.x = 567;
pos.y = 343;
return pos;
}
int main()
{
struct Point mouse_pos = getMousePos();
printf("Mousepos %d,%d\n", mouse_pos.x, mouse_pos.y");
}
기능은 앞으로 (이것은 일반적으로 헤더 파일에서 수행 될 것이다),
extern
로 선언 할 수
그래서 다른 기능은 매개 변수, 즉 프로토 타입을 알고 함수가 다른 파일에 정의 된 경우에도 반환 유형을 반환합니다.
여기에 묻는 것이 확실하지 않습니다 ... –
두 개 이상의 변수를 반환하려는 함수의 서명을 정의하는 것과 비슷한 질문이 있습니다. http://stackoverflow.com/a/8999520/143897 –