2015-01-31 3 views
1

나는 K & R 책에서 C의 구조를 공부하고 발생하고이 :구조 선언

struct{ 
    int len; 
    char *str 
} *p; 

구조체 변수의 이름이 있어야 할 곳에 있기 때문에 나는이 혼란스러워하고, 그들은 포인터 *p을주었습니다. 아무도 여기 좀 도와 줄래? 이 선언은 무엇을 의미합니까?

+0

아래 답변이 도움이 될 경우 옆에있는 V를 눌러 수락하십시오. 고맙습니다. –

답변

3

이 선언은 intchar*의 두 필드로 구성된 구조체에 대한 포인터입니다. 이 구조체에는 이름이 없으며 동일한 구조체의 다른 포인터를 선언하려는 경우 다시 작성해야합니다. 이 같은 것을 쓸 수

주의 사항 :

struct MyStruct { 
int data1; 
char data2; 
}; 

이것은 당신이 변수 선언과 같이 나중에 사용할 수있는 새로운 구조체 형 정의합니다 : struct MyStruct myVar;합니다. 당신이 쓴 것과의 차이점은이 구조체는 새로운 변수를 선언하지 않지만 새로운 형을 선언한다는 것입니다. 왜냐하면 내 예제의 구조체는 이름을 가지기 때문에 여러분은 그렇지 않습니다.

또 다른 옵션은 typedef을 사용하고이 구조체에 이름을 부여한 다음이 유형의 변수를 더 많이 선언하기 위해 지정한 이름을 사용할 수 있습니다.

자세한 내용은 http://en.wikipedia.org/wiki/Typedef에서 "선언 단순화"절을 참조하십시오.