함수 이름 앞에 별표가있는 기능은 무엇입니까?
저에게 익숙하지 않은 함수 선언이있는 대부분의 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*
.
'Development Tip' 카테고리의 다른 글
UTF8을 사용한 MySQL 명령 줄 형식 (0) | 2020.12.04 |
---|---|
MySQL VARCHAR 크기? (0) | 2020.12.04 |
py.test에게 특정 디렉토리를 건너 뛰도록 지시하는 방법은 무엇입니까? (0) | 2020.12.04 |
XML 레이아웃에서 조각을 선언하는 경우 번들을 어떻게 전달합니까? (0) | 2020.12.04 |
왼쪽 조인을 적용하기 전에 테이블 필터링 (0) | 2020.12.04 |