Development Tip

함수 이름 앞에 별표가있는 기능은 무엇입니까?

yourdevel 2020. 12. 4. 21:02
반응형

함수 이름 앞에 별표가있는 기능은 무엇입니까?


저에게 익숙하지 않은 함수 선언이있는 대부분의 C 프로그램에서 보는 것과 혼동되었습니다.

void *func_name(void *param){
    ...
}

기능에 어떤 *의미가 있습니까? *변수 유형에서 ( )에 대한 나의 이해는 다른 변수에 대한 포인터를 생성하므로 후자의 변수가 메모리에 저장되는 주소를 추적 할 수 있다는 것입니다. 하지만이 경우 함수의 경우이 *별표 가 무엇을 의미 하는지 모르겠습니다 .


별표는 함수 이름이 아닌 반환 유형에 속합니다. 즉 :

void* func_name(void *param) { . . . . . }

함수가 void 포인터를 반환 함을 의미합니다 .


*는 함수의 반환 유형을 나타냅니다 void *.

포인터 변수를 선언 할 때 *변수 이름이나 변수 유형에 가깝게 배치하는 것은 동일 합니다.

int *a;
int* a;

,구분 기호를 사용하여 여러 포인터를 정의 하려면 *매번 반복해야하기 때문에 개인적으로 첫 번째 선택이 더 명확하다고 생각합니다 .

int *a, *b;

다음과 같이 작성하면 "close to type syntax"를 사용하면이 경우 오해의 소지가 있습니다.

int* a, b;

int ( a) 및 int ( )에 대한 포인터를 선언합니다 b.

따라서 함수 반환 유형에서도 해당 구문을 찾을 수 있습니다!


*반환 형식에 속한다. 이 함수는 void *지정되지 않은 유형의 메모리 위치에 대한 포인터 인을 반환 합니다.

포인터는 그 자체로 일부 메모리 위치의 주소를 값으로 갖는 변수 유형입니다. C의 다른 포인터 유형은 포인터 변수가 참조하는 메모리 위치에 상주 할 것으로 예상되는 다른 유형을 나타냅니다. 따라서 a int *int. 그러나 a void *는 지정되지 않은 유형의 메모리 위치를 참조하는 포인터 유형입니다. 참조하는 메모리 위치에서 데이터에 액세스 할 수 있으려면 이러한 void 포인터를 캐스팅해야합니다.


이는 함수가 void*.

참고 URL : https://stackoverflow.com/questions/8911230/what-is-the-function-of-an-asterisk-before-a-function-name

반응형