C++에서 구조 체 의 정의,초기 화,인용 분석

정의:구조 체(struct)는 같은 유형 이나 서로 다른 유형의 데이터 로 구 성 된 일련의 데이터 집합 으로 구조 라 고도 부른다.
하나의 구조 체 유형 을 설명 하 는 형식 은

struct Student{      // Student
 int num;         // num
 char name[20];   // name
 char sex;        // sex
 int age;         // age
 float score;     //
 char addr[30];   // addr
}
구조 체 유형 변수의 정의 방법 과 초기 화 이다.
구조 체 변 수 를 정의 하 는 방법:(1)구조 체 유형 이 변수 이름

#include<iostream>
using namespace std;
int main(){
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  float score;     //
     char addr[30];   // addr
   };
   Student student1,student2;// student1 student2
   cout<<sizeof(Student)<<endl;
   cout<<sizeof(student1)<<endl;
   cout<<sizeof(student2)<<endl;    
   return 0;
}
을 정의 하고 있 음 을 먼저 설명 합 니 다.

구조 체 변 수 를 정의 한 후에 시스템 은 메모리 셀 을 분배 합 니 다.(sizeof 함수 로 분 배 된 바이트 수 를 볼 수 있 습 니 다.컴 파일 시스템 에 차이 가 있 습 니 다)
(2)성명 유형 과 동시에 변수 정의

#include<iostream>
using namespace std;
int main(){
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  float score;     //
     char addr[30];   // addr
   }student1,student2;// student1 student2
   cout<<sizeof(Student)<<endl;
   cout<<sizeof(student1)<<endl;
   cout<<sizeof(student2)<<endl;    
   return 0;
}
(3)구조 체 유형 변수 직접 정의

#include<iostream>
using namespace std;
int main(){
 struct {      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  float score;     //
     char addr[30];   // addr
   }student1,student2;// student1 student2
   cout<<sizeof(student1)<<endl;
   cout<<sizeof(student2)<<endl;    
   return 0;
}

이런 정의 방법 은 비록 합 법 적 이지 만 자주 사용 되 지 않 는 다.비교적 자주 사용 하 는 것 은 첫 번 째 방법 이다.
구조 체 의 유형 에 대해 주의해 야 할 몇 가지 점:(1)유형 과 변 수 는 서로 다른 개념 이 므 로 혼동 하지 마 세 요.구조 체 변수 중의 구성원 에 게 만 값 을 부여 할 수 있 을 뿐 구조 체 유형 에 대해 서 는 값 을 부여 할 수 없습니다.
(2)구조 체 변수 중의 구성원(즉,'도 메 인')에 대해 단독으로 사용 할 수 있 고 그의 역할 과 위 치 는 같은 유형의 일반 변수 에 해당 한다.
(3)구조 체 의 구성원 도 하나의 구조 체 변수 일 수 있다.

#include<iostream>
using namespace std;
 struct Date{        // Date
  int month;      //
  int day;        //
  int year;       //
 };
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  Date birthday;   //Date ,birthday Date
  float score;     //
     char addr[30];   // addr
   };
int main(){
   Student qianshou;
   Date     riqi;
   cout<<sizeof(riqi)<<endl;
   cout<<sizeof(qianshou)<<endl; 
   return 0;
}
(5)구조 체 의 구성원 명 은 프로그램의 변수 명 과 같 을 수 있 지만 둘 은 관계 가 없다.
예 를 들 어 프로그램 에서 성형 변 수 를 따로 정의 할 수 있 습 니 다.그 는 student 중의 num 과 는 별 개의 일이 고 서로 영향 을 주지 않 습 니 다.
2 구조 체 변수의 초기 화(1)는 구조 체 를 정의 할 때 구조 체 변수 에 대한 초기 값

 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  float score;     //
     char addr[30];   // addr
       } student1={
             10001,
            "qianshou",
             'm',
             19,
             "100",
             "JiNan"
       };
(2)을 지정 하여 변 수 를 정의 할 때 초기 화(이런 방법 이 더 자주 사용)

 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  float score;     //
     char addr[30];   // addr
   };
    Student student1={
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; &nbsp; &nbsp; 10001,
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; &nbsp; &nbsp; "qianshou",
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; &nbsp; &nbsp; 'm',
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; &nbsp; &nbsp; 19,
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; &nbsp; &nbsp; "100",
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; &nbsp; &nbsp; "JiNan"
<SPAN style="WHITE-SPACE: pre"> </SPAN> &nbsp; };
구조 체 변수의 인용 은 구조 체 변 수 를 정의 한 후에 이 변 수 를 인용 할 수 있다.
(1)구조 체 변수 중 한 구성원 의 값 참조
인용 방식:구조 체 변수 명.구성원 명
그 중에서"."는 구성원 연산 자 입 니 다.모든 연산 자 중에서 우선 순위 가 가장 높 습 니 다.

#include<iostream>
using namespace std;
 struct Date{        // Date
  int month;      //
  int day;        //
  int year;       //
 };
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  Date birthday;   //Date ,birthday Date
  float score;     //
     char addr[30];   // addr
   };
int main(){
   Student one={001,"qianshou",'m',19,10,1,1993,100,"JiNan"};
   cout<<one.num<<endl;
   cout<<one.name<<endl;
   cout<<one.sex<<endl;
   cout<<one.age<<endl;
   cout<<one.birthday.month<<"/"<<one.birthday.day<<"/"<<one.birthday.year<<endl;
   cout<<one.score<<endl;
   cout<<one.addr<<endl;
   return 0;
}
만약 에 한 구성원 본사 도 하나의 구조 체 유형 이 라면 몇 개의 구성원 연산 자 를 사용 하여 한 단계 한 단계 최저 등급 의 구성원 을 찾 아야 한다.
예 를 들 어

  cout<<one.birthday.month<<"/"<<one.birthday.day<<"/"<<one.birthday.year<<endl;
(2)하나의 구조 체 변수의 값 을 같은 기 구 를 가 진 다른 구조 체 변수 에 지불 할 수 있다.

#include<iostream>
using namespace std;
 struct Date{        // Date
  int month;      //
  int day;        //
  int year;       //
 };
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  Date birthday;   //Date ,birthday Date
  float score;     //
     char addr[30];   // addr
   };
int main(){
   Student two={1,"qianshou",'m',19,10,01,1993,100,"JiNan"};
   Student one=two;
   cout<<one.num<<endl;
   cout<<one.name<<endl;
   cout<<one.sex<<endl;
   cout<<one.age<<endl;
   cout<<one.birthday.month<<"/"<<one.birthday.day<<"/"<<one.birthday.year<<endl;
   cout<<one.score<<endl;
   cout<<one.addr<<endl;
   return 0;
}
(3)구조 체 변수의 주 소 를 인용 할 수도 있 고 구조 체 변수 구성원 의 주 소 를 인용 할 수도 있다.

#include<iostream>
using namespace std;
 struct Date{        // Date
  int month;      //
  int day;        //
  int year;       //
 };
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex;        // sex
  int age;         // age
  Date birthday;   //Date ,birthday Date
  float score;     //
     char addr[30];   // addr
   };
int main(){
   Student two={1,"qianshou",'m',19,10,01,1993,100,"JiNan"};
   Student &one=two;
   one.num++;
   one.birthday.day+=10;
   cout<<two.num<<endl;
   cout<<two.name<<endl;
   cout<<two.sex<<endl;
   cout<<two.age<<endl;
   cout<<two.birthday.month<<"/"<<two.birthday.day<<"/"<<two.birthday.year<<endl;
   cout<<two.score<<endl;
   cout<<two.addr<<endl;
   return 0;
}
작은 실례:

#include<iostream>
using namespace std;
 struct Date{        // Date
  int month;      //
  int day;        //
  int year;       //
 };
 struct Student{      // Student
  int num;         // num
  char name[20];   // name
  char sex[5];        // sex
  int age;         // age
  Date birthday;   //Date ,birthday Date
  float score;     //
     char addr[30];   // addr
   };
int main(){
   Student one;
   //
   cout<<" :";
   cin>>one.num;
   cout<<" :";
   cin>>one.name;
   cout<<" :";
   cin>>one.sex;
   cout<<" :";
   cin>>one.age;
   cout<<" :";
   cin>>one.birthday.year;
   cin>>one.birthday.month;
   cin>>one.birthday.day;
   cout<<" :";
   cin>>one.score;
   cout<<" :";
   cin>>one.addr;
   //
   cout<<"

";
   cout<<" :"<<one.num<<endl;
   cout<<" :"<<one.name<<endl;
   cout<<" :"<<one.sex<<endl;
   cout<<" :"<<one.age<<endl;
   cout<<" :"<<one.birthday.year<<"/"<<one.birthday.month<<"/"<<one.birthday.day<<endl;
   cout<<" :"<<one.score<<endl;
   cout<<" :"<<one.addr<<endl; 
   return 0;
}

좋은 웹페이지 즐겨찾기