이전에 C 언어 과정에서 공백 **을 보지 못했습니다.무효 란 무엇입니까 ** mean
int *dev_c;
dev_c = &val;
printf("%p\n",dev_c); // val address
printf("%p\n",&dev_c); // get the address of dev_c
printf("%p\n",(void **)&dev_c);
는 (무효 **) 형식 변환기입니까? 마지막 두 행은 동일한 결과를 출력합니다.
이전에 C 언어 과정에서 공백 **을 보지 못했습니다.무효 란 무엇입니까 ** mean
int *dev_c;
dev_c = &val;
printf("%p\n",dev_c); // val address
printf("%p\n",&dev_c); // get the address of dev_c
printf("%p\n",(void **)&dev_c);
는 (무효 **) 형식 변환기입니까? 마지막 두 행은 동일한 결과를 출력합니다.
(void**)
은 캐스트입니다. 그것은 주소 (int
에 포인터에 대한 유형 포인터가 있음)를 캐스팅하는 대신, void
에 대한 포인터를 가리키는 포인터로 만듭니다.
void 형식의 포인터에 대한 포인터입니다. 해당 라인은 해당 유형에 대한 참조를 캐스팅하고 있습니다.
void**
이 &dev_c
의 주소가 포인터에 대한 포인터가 될 것이며,이 void**
에 typecasted되도록 dev_c
포인터입니다 pointer.In 당신 예에 포인터이다.
(void **)
은 포인터 포인터를 나타내는 형식입니다.
printf의 예제 코드에서는 아무 것도 수행하지 않습니다.
(void **) & dev_c == (void *) dev_c? – John
@ 존 : 아니요,'(void **) & dev_c'는 스택에있는'dev_c' 변수의 주소 *입니다. '(void *) dev_c'는'dev_c' 변수에 저장된 * 값입니다. –