C++에서 구조 체 의 유형 정의 와 초기 화 및 변수 참조
8945 단어 C++
사용자 가 편리 하 게 사용 할 수 있 도록 다양한 유형의 데 이 터 를 유기적인 전체 로 조합 해 야 할 때 도 있다.이 조합 들 이 하나의 전체 에서 의 데 이 터 는 서로 연결 되 어 있다.예 를 들 어 한 학생 의 학 번,성명,성별,연령,성적,가정 주소 등 은 모두 이 학생 의 속성 이다.그림 참조.
학 번(num),이름(name),성별(sex),나이(age),성적(score),주소(addr)를 볼 수 있 습 니 다.프로그램 에서 num,name,sex,age,score,addr 를 각각 독립 된 변수 로 정의 하면 그들의 내 적 관 계 를 반영 하기 어렵다.그것들 을 하나의 조합 항목 으로 구성 해 야 한다.하나의 조합 항목 에는 몇 가지 유형 이 다른(물론 같 을 수도 있다)데이터 항목 이 포함 되 어 있다.C 와 C++는 사용자 가 스스로 이러한 데이터 형식 을 지정 할 수 있 도록 합 니 다.이 를 구조 체 라 고 합 니 다.그것 은 다른 고급 언어의 기록(record)에 해당 한다.
예 를 들 어 아래 의 성명 을 통 해 그림 과 같은 데이터 형식 을 만 들 수 있다.
struct Student// Student
{
int num; // num
char name[20]; // name, 20
char sex; // sex
int age; // age
float score; //
char addr[30]; // addr, 30
}; //
이렇게 해서 프로그램 설계 자 는 새로운 구조 체 유형 Student(struct 는 구조 체 유형 을 설명 할 때 반드시 사용 해 야 하 는 키워드 로 생략 할 수 없습니다)를 컴 파일 시스템 에 설명 했다.이것 은 num,name,sex,age,score,addr 등 서로 다른 유형의 데이터 항목 을 포함 하 는 구조 체 유형 이다.Student 는 하나의 유형 명 으로 시스템 이 제공 하 는 표준 유형(예 를 들 어 int,char,float,double)과 같이 변 수 를 정의 할 수 있 습 니 다.다만 구조 체 유형 은 사용자 가 미리 설명 해 야 할 뿐 입 니 다.구조 체 유형 을 설명 하 는 일반적인 형식 은 다음 과 같 습 니 다.
struct { };
구조 체 유형 명 은 구조 체 유형의 표지 로 쓰 인 다.위의 성명 에서 Student 는 구조 체 유형 명 이다.대괄호 안 은 이 구조 체 의 모든 구성원(member)으로 특정한 구조 체 를 구성한다.상례 의 num,name,sex,score 등 은 모두 구조 체 의 구성원 이다.하나의 구조 체 유형 을 설명 할 때 각 구성원 에 대해 유형 성명 즉 유형 명 구성원 이름 을 해 야 합 니 다.모든 구성원 을 구조 체 중의 한 도 메 인(field)이 라 고도 부른다.구성원 표 열 을 도 메 인 표 라 고도 부른다.구조 체 형식의 위 치 는 일반적으로 파일 의 시작 에 있 습 니 다.모든 함수(main 함수 포함)전에 이 파일 의 모든 함수 가 변 수 를 정의 할 수 있 도록 합 니 다.물론 함수 에서 구조 체 유형 을 설명 할 수도 있다.
C 언어 에서 구조 체 의 구성원 은 데이터 일 수 밖 에 없다(위의 예 에서 보 듯 이).C++이 를 확대 하면 구조 체 의 구성원 은 데이터(즉 데이터 구성원)도 포함 할 수 있 고 함수(즉 함수 구성원)도 포함 하여 대상 을 대상 으로 하 는 프로그램 설계 에 적응 할 수 있다.
그러나 C++는 클래스(class)유형 을 제공 하기 때문에 일반적인 상황 에서 함수 가 있 는 구조 체 를 사용 할 필요 가 없 기 때문에 이 장 에 서 는 데이터 구성원 만 포함 하 는 구조 체 만 소개 하고 함수 구성원 을 포함 하 는 구조 체 는 후속 장 에서 소개 할 것 이다.
구조 체 형식 변수의 정의 방법 및 초기 화
이상 은 하나의 구조 체 유형 만 지 정 했 을 뿐 하나의 모델 에 해당 하지만 그 중에서 구체 적 인 데이터 가 없고 시스템 도 이 를 위해 실제 메모리 유닛 을 분배 하지 않 습 니 다.프로그램 에서 구조 체 형식의 데 이 터 를 사용 할 수 있 도록 구조 체 형식의 변 수 를 정의 하고 그 중에서 구체 적 인 데 이 터 를 저장 해 야 합 니 다.
구조 체 유형 변 수 를 정의 하 는 방법 은 다음 과 같은 세 가지 방법 으로 구조 체 유형의 변 수 를 정의 할 수 있다.
1)구조 체 유형 을 먼저 설명 하고 변수 이름 을 정의 한다.
위 에서 구조 체 유형 Student 를 정의 한 경우 구조 체 변 수 를 정의 할 수 있 습 니 다.예:
C 언어 에서 구조 체 변 수 를 정의 할 때 구조 체 유형 명 앞 에 키워드 Sttut 를 붙 여야 합 니 다.C++는 C 의 용법 을 유지 합 니 다.예 를 들 어:
struct Student studentl, student2;
독자 가 C++프로그램 을 작성 할 때 C++에서 새로 제시 한 방법 을 사용 하 는 것 을 권장 합 니 다.즉,구조 체 변 수 를 정의 할 때 키워드 Struct 를 추가 하지 않 아 도 됩 니 다.이렇게 사용 하 는 것 이 더욱 편리 하고 제8 장 에서 소개 한 클래스(class)이름 정의 대상 의 용법 과 일치 합 니 다.
이상 은 student 1 과 student 2 를 구조 체 유형 Student 의 변수 로 정 의 했 습 니 다.즉,Student 유형의 구 조 를 가지 고 있 습 니 다.그림 에서 보 듯 이.
구조 체 변 수 를 정의 한 후에 시스템 은 메모리 셀 을 분배 합 니 다.예 를 들 어 student 1 과 student 2 는 메모리 에서 각각 63 개의 바이트(4+20+1+4+4+30=63)를 차지한다.
2)성명 형식 과 동시에 변 수 를 정의 합 니 다.예 를 들 면:
struct Student // Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1, student2; // Student student1,student2
이러한 형식의 정의 의 일반적인 형식 은 다음 과 같다.
struct
{
} ;
3)구조 체 유형 변 수 를 직접 정의 한다.그 일반적인 형식 은:
struct //
{
} ;
이런 방법 은 비록 합 법 적 이지 만 거의 사용 되 지 않 는 다.유형 을 먼저 정의 한 후에 변 수 를 정의 하 는 제(1)방법 을 제창한다.프로그램 이 비교적 간단 하고 구조 체 유형 이 본 파일 에서 만 사용 되 는 경우 에 도 제(2)방법 을 사용 할 수 있다.구조 체 유형 에 대해 몇 가지 설명 이 있 습 니 다.
1)구조 체 유형 이 모두 같은 구 조 를 가지 고 있다 고 착각 하지 말 아야 한다.실제로 모든 구조 체 유형 은 자신의 구 조 를 가지 고 여러 가지 구체 적 인 구조 체 유형 을 정의 할 수 있다.
2)유형 과 변 수 는 서로 다른 개념 이 므 로 혼동 하지 마 십시오.구조 체 변수 중의 구성원 에 게 만 값 을 부여 할 수 있 을 뿐 구조 체 유형 에 대해 서 는 값 을 부여 할 수 없습니다.컴 파일 할 때 형식 에 공간 을 분배 하지 않 고 변수 에 만 공간 을 분배 합 니 다.
3)구조 체 중의 구성원(즉'도 메 인')에 대해 단독으로 사용 할 수 있 고 그의 역할 과 위 치 는 일반 변수 에 해당 한다.
4)구성원 도 하나의 구조 체 변수 일 수 있다.예:
struct Date // Date
{
int month;
int day;
int year;
};
struct Student // Student
{
int num;
char name[20];
char sex;
int age;
Date birthday;
char addr[30];
}student1, student2; // student1 student2 Student
먼저 Date 형식 을 설명 합 니 다.'날짜'는 3 명의 구성원 을 포함 합 니 다.rnomh(월),day(일),year(년)입 니 다.그리고 Studcm 형식 을 설명 할 때 멤버 birthday 를 Date 형식 으로 지정 합 니 다.Student 의 구 조 는 그림 과 같다.설 명 된 형식 Date 와 다른 유형(예 를 들 어 im,char)-처럼 구성원 의 유형 을 정의 할 수 있 습 니 다.5)구조 체 의 구성원 명 은 프로그램의 변수 명 과 같 을 수 있 으 나 둘 은 관계 가 없다.예 를 들 어 프로그램 에서 하나의 정형 변수 num 을 따로 정의 할 수 있 는데 이것 은 student 의 num 과 는 별 개의 것 이 고 서로 영향 을 주지 않 습 니 다.
구조 체 변수의 초기 화
다른 유형의 변수 와 마찬가지 로 구조 체 변 수 를 정의 할 때 초기 값 을 지정 할 수 있 습 니 다.예:
struct Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}student1={10001, "Zhang Xin", 'M', 19, 90.5, "Shanghai"};
이렇게 하면 변수 student 1 의 데 이 터 는 그림 과 같다.또한 성명 형식 과 정의 변 수 를 분리 하 는 형식 으로 변 수 를 정의 할 때 초기 화 할 수 있 습 니 다.
Student student2 = { 10002, "Wang Li", "F", 20, 98, "Beijing"}; //Student
C+구조 체 변수의 인용구조 체 변 수 를 정의 한 후에 당연히 이 변 수 를 인용 할 수 있 고 자주 사용 하 는 방법 은 다음 과 같은 몇 가지 가 있다.
1)하나의 구조 체 변수의 값 을 같은 구 조 를 가 진 다른 구조 체 변수 에 부여 할 수 있다.
위의 student 1 과 student 2 는 모두 student 형식의 변수 입 니 다.이렇게 값 을 부여 할 수 있 습 니 다.
student1= student2;
2)구조 체 변수 중 한 구성원 의 값 을 참조 할 수 있 습 니 다.예 를 들 어 student 1.num 은 구조 체 변수 student 1 의 구성원 의 값 을 나타 내 고 student 1 의 값 이 그림 과 같 으 면 student 1.num 의 값 은 10001 이다.
구조 체 변수 에서 구성원 을 참조 하 는 일반적인 방식 은 다음 과 같 습 니 다.
.
예 를 들 어 변수의 구성원 에 게 값 을 부여 할 수 있 습 니 다.
student1.num=10010;
3)구성원 자체 도 하나의 구조 체 유형 이 라면 여러 구성원 연산 자 를 사용 하여 1 급 1 급 으로 가장 낮은 구성원 을 찾 아야 한다.예 를 들 어 위 에서 정 의 된 구조 체 변수 student 1 에 대해 각 구성원 에 게 이렇게 접근 할 수 있 습 니 다.
student1.num ( student1 num )
student 1 변수 중의 birthday 멤버 중 month 멤버 를 인용 하려 면 student 1.month 라 고 쓸 수 없습니다.한 단계 씩 인용 해 야 합 니 다.즉,
student1.birthday.month=12; ( student1 birthday month )
4)하나의 구조 체 변 수 를 하나의 전체 로 입력 하고 출력 할 수 없다.예 를 들 어 student 1 과 student 2 를 구조 체 변수 로 정의 하고 값 이 있 습 니 다.구조 체 변수 에 있 는 각 구성원 의 값 을 이렇게 출력 하려 고 할 수 없습니다.
cin>>student1;
구조 체 변수 중의 각 구성원 에 게 만 각각 입력 과 출력 을 할 수 있 습 니 다.5)구조 체 변수의 구성원 은 일반 변수 처럼 각종 연산 을 할 수 있다(그 유형 에 따라 할 수 있 는 연산 종 류 를 결정 한다).예 를 들 면:
student2.score=student1.score;
sum=student1.score+student2.score;
student1.age++;
++student1.age;
"."연산 자의 우선 순위 가 가장 높 기 때문에 student 1.age+는(student 1.age)+에 해당 합 니 다.+student 1.age 에 대해 자가 연산 을 하 는 것 이지,먼저 age 에 대해 자가 연산 을 하 는 것 이 아니다.6)구조 체 변수 구성원 의 주 소 를 인용 할 수도 있 고 구조 체 변수의 주 소 를 인용 할 수도 있다.예:
cout<<&student1; // student1
cout<<&student1.age; // student1.age
구조 체 변수의 주 소 는 주로 함수 매개 변수 로 사용 되 며 구조 체 변수의 주 소 를 형 삼 에 전달 합 니 다.[예]구조 체 변수 중의 구성원 을 인용 합 니 다.
#include <iostream>
using namespace std;
struct Date// Date
{
int month;
int day;
int year;
};
struct Student// Student
{
int num;
char name[20];
char sex;
Date birthday; // birthday Date
float score;
}student1,student2={10002,"Wang Li",'f',5,23,1982,89.5};
// Student student1,student2, student2
int main( )
{
student1=student2; // student2 student1
cout<<student1.num<<endl; // student1 num
cout<<student1.name<<endl; // student1 name
cout<<student1.sex<<endl; // student1 sex
cout<<student1.birthday.month<<'/'<<student1.birthday.day<<'/' <<student1.birthday.year<<endl; // student1 birthday
cout<<student1.score<<endl;
return 0;
}
실행 결 과 는 다음 과 같 습 니 다.
10002
Wang Li
f
5/23/1982
89.5
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio에서 파일 폴더 구분 (포함 경로 설정)Visual Studio에서 c, cpp, h, hpp 파일을 폴더로 나누고 싶었습니까? 어쩌면 대부분의 사람들이 있다고 생각합니다. 처음에 파일이 만들어지는 장소는 프로젝트 파일 등과 같은 장소에 있기 때문에 파일...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.