2010-01-30 4 views
1

만약 내가 typedef someobject* pntr;C++ typedef 질문

이 typedef를 사용하여 someOBject 유형의 객체를 가리키는 포인터를 만들 수 있습니다. 하지만 somebody의 배열을 가리 키기 위해이 typedef로 만든 포인터를 사용할 수 있습니까?

답변

2

예 :

pntr p = new someobject[10]; 

그러나, 뭔가 포인터라는 사실을 위장하는 형식 정의를 사용하기 때문에이 작업을 수행하지 않습니다 모두 C++와 C 가난한 스타일 간주됩니다.

+0

또는 'someobject_ptr' 또는'SomeObjectPtr' 또는 여러분의 스타일이 어떤 포인터인지 알 수 있도록 이름을 지정하십시오. 이것은 API에서 일반적으로 사용됩니다. –

0

예. 배열 구문은 실제로 메모리 주소를 지정하여 유형 (객체)을 찾습니다. typedef를 사용하면 형식에 맞는 포인터 수학을 계산할 때 메모리에서 얼마나 멀리 나아갈 것인지를 알 수 있습니다.

SomeObject의 배열을 가지고 있다면, 컴파일러는 someObjectArray [0]에서 someObjectArray [1]로 갈 때 메모리의 올바른 지점으로 포인터를 이동하기 위해 typedef 정보가 필요합니다.

1

예, typedef 포인터 유형. const pntrconst someobject*은 같은 것이 아닙니다 (전자는 포인터 자체가 일정하다는 것을 의미하고, 후자는 pointee가 상수라는 것을 의미합니다).