2014-08-28 5 views
1

포인터를 읽는 가장 좋은 방법을 알려주시겠습니까? 오른쪽에서 왼쪽으로 포인터를 읽어야하고, const 한정자는 오른쪽에 있어야한다는 것을 알고 있습니다. 내 문제는 예를 들어, 포인터에 대한 포인터를 읽기에 올 때 :포인터에 포인터를 읽는 방법 C++?

int i = 10; 
int const *const p = &i; 
int const *const *p2 = &p; //how should I read this ? 

내가 p2constconst 포인터에 대한 포인터를 가지고 읽어해야 하는가?

포인터가 const 포인터를 가리키는 것으로 지정하면 왜 const 포인터가됩니까?

+0

나는 이것을 읽는 것을 혼란스러워했다. 나는 당신이 그것을 어떻게 참조 해제하고 인쇄 하는가에 관해서 P2를 "읽는"방법을 묻고 있다고 생각했다. 그런 다음 당신은 그것을 "정신적으로"읽는 것을 깨달았다. 그래서 저처럼 느린 사람은 OP의 질문을 명확히하기를 바랍니다. – Brandon

+0

"포인터를 오른쪽에서 읽어야한다는 것을 알고 있습니다."- 그렇습니다. 그래서 문제가 무엇입니까? 오른쪽에서 왼쪽으로 읽는다면, "p2"는 상수'int'에 대한 상수 포인터에 대한 포인터입니다. 귀하의 마지막 질문에 관해서는 : 그것은'const'가 아니며 단지 const를 가리키고 있습니다. –

답변

0

예, p2는 const int에 대한 const 포인터에 대한 포인터입니다. 포인터 자체는 const가 아니라 포인터가 가리키는 점입니다. 그것이 당신이 그것을 선언 한 방법이기 때문에 그 방법입니다.

명확하지 않은 경우 : const 포인터는 포인터를 통해 무언가에 쓸 수 없다는 것을 의미합니다.

const 포인터는 포인터 자체가 변경 될 수 없음을 의미합니다. 포인터를 다른 개체를 참조하도록 수정할 수 없으므로 하나의 개체의 주소로 초기화해야합니다. p2을 선언 했으므로 을 가리키는 값을 쓰지 않고에 쓸 수는 있지만 원하는 경우 다른 개체를 참조하도록 포인터 자체를 수정할 수 있습니다.

0

"p2는 상수 int에 대한 상수 포인터에 대한 포인터입니다."

"p는 상수 int에 대한 상수 포인터입니다."

"상수 포인터"와 "상수 포인터"참고 전자는 다른 것을 가리킬 수없는 포인터입니다. 후자는 다른 곳을 가리 키도록 변경 될 수있는 포인터이지만 포인터가 가리키는 포인터는 변경하는 데 사용할 수 없습니다.

+0

"constant"는 잘못된 것입니다. const 포인터를 통해 가리키는 값을 변경할 수는 없지만 여전히 변할 수 있습니다 (예를 들어, 포인터 대신에 직접 쓰여짐으로써). –

+0

그래서 "포인터 (포인터)를 바꿀 수 없다"고 말한 것입니다. " 예, 다른 것이 그것을 바꿀 수 있습니다. –

0

예, 기본적으로는 p2에 다른 값을 할당 할 수 있습니다 : 그것은 constintconst 포인터에 대한 포인터입니다.

0

p2는 상수 포인터가 아닙니다.

int const *const *const p2 = &p; 

자,이 CONST의 INT에 const를 포인터로 가리키는 const 포인터 : 당신이처럼 지정하는 경우는 일정이 될 것입니다.

원래 선언에서 const int에 대한 const 포인터를 가리키는 포인터입니다.

관련 문제