2010-03-30 5 views
3

그냥 초보자 질문을 물어보고 싶은 ... 여기C, 초급 질문

, 나는 포인터의 개념/기본을 이해하기위한 몇 가지 코드를 만들어 , 이유는 &*(&*d) "b"의 주소 대신 "c"의 반송 주소입니까? 는 또한 &*(&*(&*(&*(&*d))))과 같은 코드를 해봤지만, &*가 서로 상쇄하기 때문에 그것은

감사에게 "C"의 많은 :

답변

4

를 반환 주소를 유지합니다. * 역 참조 d 이것은 c의 값을 제공합니다. 그리고 &c의 주소 또는 d의 값을 제공합니다.

+0

물론 고마워요 – BobAlmond

3

&*은 서로 취소됩니다. 포인터를 역 참조하려면 *이 필요합니다. 따라서 **d을 시도하십시오.

+0

... !!! – jjj

1

간단한 규칙 : 값을 액세스/제공하려면 *을 사용하고 &을 사용하여 주소에 액세스/제공하십시오.

0

* 포인터를 역 참조하고 포인터가 가리키는 곳의 내용을 제공합니다. &은 기본적으로 주소입니다.

그들은 당신이 당신이 **d을 필요 B에 대한 당신이 *d을 필요 c를의 주소를 인쇄하려면 &*d가 D 에 해당, 서로를 취소하고있는 데이터 당신이 필요로하는 것과 동일한 지점에서 사용하는 경우 ***d.

0

x이 변수 인 경우 &*x은 정확히 x과 같지 않습니다. 전자는 rvalue이고, 후자는 lvalue입니다. 반면에 *&x은 항상 x과 동일합니다. 두 표현식 모두 lvalues이므로.