2014-01-15 12 views
-5

라는 이름의가 있습니다. 그렇다면 다음 메소드에서 포인터 ptr을 선언하면됩니다.초기화 사이의 차이 :

struct tree* ptr; 

tree* ptr; 
+0

죄송합니다. 자바 스크립트를 작성했습니다. 나는 C++로 데이터 구조를 연구 중이다. 차이점이 무엇인지 말해봐. 나는 DS에 새로운 사람이다 –

답변

1

첫 번째 정교 타입 지정하고, 이외의 모든 유형을 무시 C++, 특별한 이름 조회 규칙을 사용 : 그럼 어떻게이 두 문장 사이의 차이는 이름. 번째 비정규 이름 조회를 사용하고, 그들은 존재하는 경우, 예를 들면 (a 컴파일러 오류가 발생할 것이다) 변수 기능을 찾을 것이다

struct Toto {}; 
void Toto(); 

struct Toto myVar;  // Legal. 
Toto myVar;    // Illegal. 

C++은 C와의 호환성의 이유로 이러한 정의를 허용 하지만 피해야합니다. 가 아닌 형과 같은 범위에있는 같은 이름의 유형 모두가없는 경우,이 이유 이

Toto myVar; 

를 사용하지 않는, 그리고 훨씬 더 관용적이다. 그러나 때때로 당신이하지 선택의 여지가 수행 POSIX의 헤더 stat.h을 정의 모두 structstat라는 함수, 그래서 당신이 작성해야합니다 :

struct stat fileInfo; 
if (stat(filename.c_str(), &fileInfo) != 0) { 
    // error... 
} 

이러한는 이전 버전과의 호환성의 가격입니다.

+0

"제임스 Kanze"는 나를 나에게 gmail id를 줄 수 있냐? 내 것은 [email protected] –

+0

위의 예제를 붙여 넣었습니다. "toto는 형식을 지정하지 않았습니다."라는 오류 메시지가 나타납니다. 무슨 뜻이에요? –

+0

@UsmanRaza '// Illegal'이라고 표시된 줄에서 얻은 오류 메시지라고 생각합니다. 그것은 정규화되지 않은 이름 검색이'Toto' (실제로'struct Toto'를 감추는) 함수를 발견했기 때문에 유형이 아니며 사용 된 구문에 유형이 필요하다는 것을 의미합니다. –