2013-08-07 2 views
1

이전에 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); 

(무효 **) 형식 변환기입니까? 마지막 두 행은 동일한 결과를 출력합니다.

답변

2

(void**)은 캐스트입니다. 그것은 주소 (int에 포인터에 대한 유형 포인터가 있음)를 캐스팅하는 대신, void에 대한 포인터를 가리키는 포인터로 만듭니다.

+0

(void **) & dev_c == (void *) dev_c? – John

+0

@ 존 : 아니요,'(void **) & dev_c'는 스택에있는'dev_c' 변수의 주소 *입니다. '(void *) dev_c'는'dev_c' 변수에 저장된 * 값입니다. –

1

void 형식의 포인터에 대한 포인터입니다. 해당 라인은 해당 유형에 대한 참조를 캐스팅하고 있습니다.

1

void**&dev_c의 주소가 포인터에 대한 포인터가 될 것이며,이 void**에 typecasted되도록 dev_c 포인터입니다 pointer.In 당신 예에 포인터이다.

0

(void **)은 포인터 포인터를 나타내는 형식입니다.

printf의 예제 코드에서는 아무 것도 수행하지 않습니다.