제 생각에는 상황에 따라 대답은 둘 다입니다. 일반적으로 IMO에서는 유형이 아닌 포인터 이름 옆에 별표를 두는 것이 좋습니다. 예를 들어 비교 :
int *pointer1, *pointer2; // Fully consistent, two pointers
int* pointer1, pointer2; // Inconsistent -- because only the first one is a pointer, the second one is an int variable
// The second case is unexpected, and thus prone to errors
두 번째 경우가 일치하지 않는 이유는 무엇입니까? eg int x,y;
는 동일한 유형의 두 변수를 선언하지만 유형은 선언에서 한 번만 언급되기 때문입니다. 이것은 선례적이고 예상되는 행동을 만듭니다. 그리고 int* pointer1, pointer2;
이 선언 때문에 그와 일관성이없는 pointer1
포인터로하지만,pointer2
정수 변수입니다. 오류가 발생하기 쉬우므로 피해야합니다 (유형이 아닌 포인터 이름 옆에 별표를 표시).
그러나 원치 않는 결과를 얻지 않고는 객체 이름 옆에 별표를 넣을 수없는 경우 (그리고 어디에 넣는 것이 중요한지) 몇 가지 예외 가 있습니다. 예를 들면 다음과 같습니다.
MyClass *volatile MyObjName
void test (const char *const p) // const value pointed to by a const pointer
마지막으로, 어떤 경우 에는 유형 이름 옆에 별표를 두는 것이 더 명확 할 수 있습니다 . 예 :
void* ClassName::getItemPtr () {return &item;} // Clear at first sight