type: def struct 와 struct 의 차이

5796 단어 데이터 구조
typedef struct & struct in C
struct
struct _Mystruct{
    int x;
    int y;
}p1;                                //p1     
struct _Mystruct p2 = {1,3};        //    _Mystruct     ,     struct

struct _Mystruct 는 int, float, double 등 과 같은 사용자 정의 구조 유형 입 니 다.p1, p2 는 이 구조 유형의 변수 이 고 P2 를 (1, 3) 로 초기 화 하 며 int a = 1 에 해당 합 니 다.이 구조 체 로 변 수 를 만 들 려 면 struct, 문법 형식 을 추가 해 야 합 니 다.
struct <    > <   >

typedef struct 이렇게 귀 찮 지 않 으 려 면 typedef 를 사용 하 세 요.
typedef int Elemtype

이것 은 알려 진 데이터 형식 int 에 새 이름 을 짓 는 것 입 니 다. Elemtype
같은 이치
typedef struct _Mystruct{
    int x;
    int y;
}q1,q2;             //    

사용자 정의 구조 유형Mystruct 가 새 이름 을 지 었 습 니 다. q1, q2 라 고 하 는데 struct 에 해당 합 니 다.Mystruct 성명 변수 형식 은:
 <     > <   >

typedef struct & struct in c++
C + + 에서 만약 에 우리 가 하나의 구조 체 유형 을 사용 해 야 한다 면 구조 체 이름 을 직접 사용 할 수 있 습 니 다. C + + 는 C 에서 구조 체 를 사용 할 때 구조 체 이름 앞 에 struct 키 워드 를 강제로 추가 하지만 예전 의 struct 구조 체 이름 변수 이름 의 문법 을 보류 하고 C 를 겸용 하기 위해 서 입 니 다.
struct Student{
    int age;
    int name;
}Stu1, Stu2;        //    

struct Student Stu3 = {10,zhangsan};    //c++/c   ,    C   
Student Stu4 = {11,lisi};               //C++  

//  Stu1,Stu2,Stu3  Student      

C + + 에서 구조 체 를 설명 할 때 type: def 를 붙 였 습 니 다.
typedef struct Mystruct{ int x; }MS1,MS2;       //    
/*      C/C++    

//      
MS1 ms1 = {11};
MS2 ms2 = {22};

//   C++  ,C   
Mystruct ms3 = {33};

//      
struct Mystruct ms4 = {44};

C + + 에 struct 이름 을 직접 사용 하여 변 수 를 만 들 수 있 는 문법 정의 포인터 별명 만 추가 되 었 습 니 다.
typedef struct Mystruct{
    int x;
}MS,*PMS;
MS ms = {11};
PMS pms = &ms       //pms      

다음 내용 도 이해 에 도움 이 된다.
전재 하 다https://www.mianbaoban.cn/blog/post/150072 type: def struct 와 struct 의 차이
type: def 를 C 언어 로 설명 하 는 키 워드 는 데이터 형식 에 새로운 이름 을 정의 하 는 역할 을 합 니 다.이곳 의 데이터 형식 은 내부 데이터 형식 (int, char 등) 과 사용자 정의 데이터 형식 (struct 등) 을 포함한다.
프로 그래 밍 에서 type: def 를 사용 하 는 목적 은 보통 두 가지 가 있 습 니 다. 하 나 는 변수 에 기억 하기 쉽 고 의미 가 명확 한 새로운 이름 을 주 는 것 이 고 다른 하 나 는 비교적 복잡 한 유형 성명 을 간소화 하 는 것 입 니 다.
typedef 에 대해 어떤 미묘 한 점 이 있 는 지 이어서 몇 가지 문제 에 대한 구체 적 인 논술 을 보십시오.
typedef & 구조의 문 제 는 아래 코드 로 구 조 를 정의 할 때 컴 파일 러 가 오 류 를 보 고 했 습 니 다. 왜 일 까요?C 언어 는 구조 에 자신 을 가리 키 는 지침 을 포함 하 는 것 을 허용 하지 않 습 니까?먼저 추측 한 후에 다음 설명 을 보십시오.
typedef struct tagNode {  char *pItem;  pNode pNext; } *pNode;
답 과 분석:
1. typedef 의 가장 간단 한 사용
typedef long byte_4;
알려 진 데이터 형식 long 에 새 이름 을 지어 주 십시오. by te4。
2. typedef 와 구조 결합 사용
typedef struct tagMyStruct {  int iNum;  long lLength; } MyStruct;
이 문 구 는 실제로 두 가지 조작 을 완성 했다.
1) 새로운 구조 유형 정의
struct tagMyStruct {  int iNum;  long lLength; };
분석: tagMyStruct 는 'tag', 즉 '태그' 라 고 부 르 는데 실제 적 으로 임시 이름 입 니 다. struct 키 워드 는 tagMyStruct 와 함께 이 구조 유형 을 구성 합 니 다. typedef 가 있 든 없 든 이 구 조 는 존재 합 니 다.
struct tagMyStruct varName 으로 변 수 를 정의 할 수 있 지만, tagMyStruct varName 을 사용 하여 변 수 를 정의 하 는 것 은 옳지 않 습 니 다. struct 와 tagMyStruct 가 결합 되 어야 구조 유형 을 표시 할 수 있 기 때 문 입 니 다.
2) typedef 는 이 새로운 구조 에 마 이 스 트럭 트 라 는 이름 을 지 었 다.
typedef struct tagMyStruct MyStruct;
따라서 MyStruct 는 사실상 struct tagMyStruct 에 해당 하 며, MyStruct varName 을 사용 하여 변 수 를 정의 할 수 있 습 니 다.
답 과 분석
C 언어 는 당연히 구조 에 자신 을 가리 키 는 지침 을 포함 할 수 있다. 우 리 는 링크 구축 등 데이터 구조의 실현 에 있어 수많은 예 를 볼 수 있다. 상기 코드 의 근본 적 인 문 제 는 type: def 의 응용 에 있다.
위 에서 설명 한 바 와 같이 새로운 구조 가 구축 되 는 과정 에서 pNext 필드 의 성명 을 만 났 습 니 다. 유형 은 pNode 입 니 다. pNode 가 유형의 새로운 이름 을 나타 내 는 것 을 알 아야 합 니 다. 그러면 유형 자체 가 완성 되 지 않 았 을 때 이 유형의 새로운 이름 도 존재 하지 않 습 니 다. 즉, 이때 컴 파일 러 는 pNode 를 전혀 모 릅 니 다.
이 문 제 를 해결 하 는 방법 은 여러 가지 가 있다.
1)、
typedef struct tagNode {  char *pItem;  struct tagNode *pNext; } *pNode;
2)、
typedef struct tagNode *pNode; struct tagNode {  char *pItem;  pNode pNext; };
메모: 이 예 에서 type: def 로 아직 완전히 설명 되 지 않 은 형식 에 새 이름 을 지어 주 십시오.C 언어 컴 파 일 러 는 이런 방법 을 지원 한다.
3) 규범 화 된 방법:
struct tagNode {  char *pItem;  struct tagNode *pNext; }; typedef struct tagNode *pNode;

좋은 웹페이지 즐겨찾기