2015-01-15 4 views
1

에서 "형식 정의"의 의미의 새로운 기능 :의 차이점은 무엇 구조체

typedef struct 
{ 

} hello; 

그리고이 : 그것은 바보 같은 질문이지만, 난 차이가 무엇인지 이해할 수없는 경우

struct hello 
{ 

}; 

죄송합니다. ..

+2

, 당신은 안녕 TMP'할 수있다'하지만 두 번째로 당신은'안녕하세요 구조체의 tmp를해야 할, 두 번째가하는' – Cornstalks

답변

3

은 "유형 정의"를 의미하는 키워드입니다. 구조체의 일부가 아닙니다. 첫 번째 예에서는 struct { ... }

의 새 유형이 이됩니다. 첫 번째 예는 유형을 만듭니다. 두 번째는 hello이라는 구조체를 선언합니다.

차이점은 첫 번째가 새로운 유형을 만듭니다. 두 번째 구조체를 선언합니다. 차이는 미묘하지만 C에, 당신은 struct 키워드가없는 구조체를 다시 사용할 수 없습니다 : (C++에서 범위 규칙은 다릅니다.)

이 유형을 사용하는 같은 것을 쓰려면 :

typedef struct { 
     int x, y; 
} hello; 

hello a, b, c; 

이것은 모두 hello 유형의 세 변수를 만듭니다.

처음으로
struct xyz { 
     int z; 
}; 

struct xyz d, e, f; 
+3

을 :

구조체를 사용하려면,이 쓰기 변수를 만들지 마라. 'struct hello'라는 이름의 타입을 생성합니다. – jwodder

+0

@jwodder : 정확합니다. 어쩌면 편집 한 것일 수도 있습니다. 나는 내 대답을 편집 할 것이다. – wallyk

+0

마지막으로, 편집은 오드에서 사라지지 않았습니다. – wallyk

관련 문제