C++ 예제가 있는 구조체
구조체 란 무엇입니까? C++?
A 구조체 하는 C++ 서로 다른 데이터 유형의 요소를 함께 저장하는 데 사용할 수 있는 데이터 구조입니다. ~ 안에 C++에서 구조는 사용자 정의 데이터 유형입니다. 구조는 단일 데이터 유형 아래에 다양한 데이터 유형의 항목을 그룹화하기 위한 데이터 유형을 생성합니다.
예 :
누군가의 이름, 시민권, 나이에 대한 정보를 저장해야 한다고 가정해 보겠습니다. 이름, 시민권, 나이 등의 변수를 만들어 데이터를 별도로 저장할 수 있습니다.
그러나 앞으로는 많은 사람에 대한 정보를 저장해야 할 수도 있습니다. 이는 다양한 개인에 대한 변수가 생성된다는 의미입니다. 예를 들어 name1, citizenship1, age1 등입니다. 이를 방지하려면 구조체를 만드는 것이 좋습니다.
언제 구조체를 사용하나요?
다음은 구조를 사용하는 몇 가지 이유입니다. C++.
- 하나의 데이터 유형 아래에 다양한 데이터 유형의 요소를 저장해야 하는 경우 구조체를 사용하십시오.
- C++ 구조체는 참조 유형이 아닌 값 유형입니다. 생성 후 데이터를 수정하지 않으려면 구조체를 사용하세요.
C++ 구조체 초기화
를 만들려면 C++ 구조에서는 struct 키워드와 식별자를 차례로 사용합니다. 식별자는 구조체의 이름이 됩니다. 다음은 C++ 구조체:
구문 :
struct struct_name { // struct members }
위 구문에서는 struct 키워드를 사용했습니다. struct_name은 구조의 이름입니다.
구조체 멤버는 중괄호 안에 추가됩니다. 이러한 멤버는 아마도 다른 데이터 유형에 속할 것입니다.
예 :
struct Person { char name[30]; int citizenship; int age; }
위의 예에서 Person은 세 개의 멤버로 구성된 구조체입니다. 회원에는 이름, 시민권, 나이가 포함됩니다. 멤버 중 하나는 char 데이터 유형이고 나머지 2개는 구조가 생성될 때 정수이며 메모리는 할당되지 않습니다. 메모리는 변수가 구조체에 추가된 후에만 할당됩니다.
구조체 인스턴스 생성
위의 예에서는 Person이라는 구조체를 만들었습니다. 다음과 같이 구조체 변수를 만들 수 있습니다.
Person p;
p는 Person 유형의 구조체 변수입니다. 이 변수를 사용하여 구조체의 멤버에 액세스할 수 있습니다.
구조체 멤버에 액세스
구조체 멤버에 접근하려면 구조체의 인스턴스와 점(.) 연산자를 사용합니다. 예를 들어, 구조체 Person의 age 멤버에 접근하려면 다음과 같습니다.
p.age = 27;
우리는 구조체 인스턴스 p를 사용하여 구조체 Person의 멤버 age에 접근했습니다. 그런 다음 회원 연령 값을 27로 설정했습니다.
예 1 :
#include <iostream> using namespace std; struct Person { int citizenship; int age; }; int main(void) { struct Person p; p.citizenship = 1; p.age = 27; cout << "Person citizenship: " << p.citizenship << endl; cout << "Person age: " << p.age << endl; return 0; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명 :
- 정의된 기능을 사용하려면 프로그램에 iostream 헤더 파일을 포함하세요.
- 클래스를 호출하지 않고 사용하려면 std 네임스페이스를 포함하세요.
- Person이라는 구조체를 만듭니다.
- 구조체 본문의 시작입니다.
- 정수 유형의 citizenship이라는 구조체 멤버를 만듭니다.
- 정수 유형의 age라는 구조체 멤버를 만듭니다.
- 구조체 본문의 끝입니다.
- main() 함수를 호출합니다. 프로그램 로직은 이 함수의 본문 내에 추가되어야 합니다.
- Person 구조체의 인스턴스를 만들고 이름을 p로 지정합니다.
- 구조체 멤버 시민권의 값을 1로 설정합니다.
- 구조체 멤버 연령 값을 27로 설정합니다.
- 다른 텍스트와 함께 콘솔에 구조체 멤버 시민권의 값을 인쇄합니다.
- 다른 텍스트와 함께 콘솔에 구조체 멤버 age 값을 인쇄합니다.
- 프로그램이 성공적으로 실행되면 값을 반환해야 합니다.
- main() 함수의 끝입니다.
구조에 대한 포인터
구조체를 가리키는 포인터를 생성할 수 있습니다. int, float, double 등과 같은 네이티브 데이터 유형을 가리키는 포인터가 생성되는 방식과 유사합니다. 포인터가 C++ 메모리 위치를 저장합니다.
예 2 :
#include <iostream> using namespace std; struct Length { int meters; float centimeters; }; int main() { Length *ptr, l; ptr = &l; cout << "Enter meters: "; cin >> (*ptr).meters; cout << "Enter centimeters: "; cin >> (*ptr).centimeters; cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters"; return 0; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명 :
- 해당 기능을 사용하려면 프로그램에 iostream 헤더 파일을 포함시킵니다.
- 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함하세요.
- Length라는 구조체를 만듭니다.
- 구조체 길이의 본문 시작입니다.
- 정수 데이터 유형의 미터라는 구조체 멤버를 만듭니다.
- 정수 유형의 cm라는 구조체 멤버를 만듭니다.
- 구조체 길이의 본문 끝입니다.
- main() 함수를 호출합니다.
- main() 함수 본문의 시작입니다.
- 포인터 변수 *ptr과 길이 유형의 일반 변수 l을 만듭니다.
- 변수 l의 주소를 우리의 포인터 변수.
- 사용자에게 변수 미터 값을 입력하라는 메시지를 콘솔에 표시합니다.
- 사용자가 키보드를 통해 입력한 값을 읽습니다. 여기서는 포인터 변수를 사용하여 멤버 함수 metres에 액세스합니다.
- 사용자에게 가변 센티미터 값을 입력하라는 메시지를 콘솔에 표시합니다.
- 사용자가 키보드를 통해 입력한 값을 읽습니다. 멤버 함수 cm는 여기서 포인터 변수를 사용하여 액세스됩니다.
- 사용자가 읽은 값을 다른 텍스트와 함께 콘솔에 표시합니다.
- 프로그램은 성공적으로 실행되면 값을 반환해야 합니다.
- main() 함수 본문의 끝입니다.
함수 인수로서의 구조체
구조체를 함수에 인수로 전달할 수 있습니다. 이는 일반 인수를 전달하는 것과 동일한 방식으로 수행됩니다. 구조체 변수를 함수에 전달할 수도 있습니다. 좋은 예는 구조체 멤버의 값을 표시해야 하는 경우입니다. 이것을 보여드리겠습니다:
예 3 :
#include<iostream> using namespace std; struct Person { int citizenship; int age; }; void func(struct Person p); int main() { struct Person p; p.citizenship = 1; p.age = 27; func(p); return 0; } void func(struct Person p) { cout << " Person citizenship: " << p.citizenship<<endl; cout << " Person age: " << p.age; }
출력:
다음은 코드의 스크린샷입니다.
코드 설명 :
- iostream 헤더 파일을 파일에 포함시킵니다. 그러면 오류 없이 해당 기능을 사용할 수 있습니다.
- 클래스를 사용하려면 프로그램에 std 네임스페이스를 포함하세요. 클래스를 사용하기 위해 네임스페이스를 호출할 필요는 없습니다.
- Person이라는 구조체를 만듭니다.
- Person 구조체의 본문 시작입니다.
- 구조체 Person의 멤버를 만듭니다. 구성원의 이름은 citizenship이고 정수 유형입니다.
- 구조체 Person의 멤버를 만듭니다. 멤버 이름은 age이고 정수 유형입니다.
- Person 구조체의 본문 끝입니다.
- Person 구조체의 인스턴스인 p를 인수로 사용하는 함수를 만듭니다.
- 주요 함수를 호출합니다. {는 main() 함수 본문의 시작을 표시합니다.
- Person 구조체의 인스턴스를 만들고 이름을 p로 지정합니다.
- 구조체의 인스턴스인 p를 사용하고 값 1을 할당하여 구조체 멤버 변수 citizenship에 액세스합니다.
- 구조체의 인스턴스인 p를 사용하고 값 27을 할당하여 구조체 멤버 변수 age에 액세스합니다.
- 함수를 호출하고 Person 구조체의 인스턴스인 p를 인수로 전달합니다.
- 함수는 성공적으로 실행되면 값을 반환해야 합니다.
- main() 함수 본문의 끝입니다.
- 함수의 본문을 만듭니다.
- 함수 본문의 시작입니다.
- 구조체 멤버 시민권 값에 액세스하고 이를 다른 텍스트와 함께 콘솔에 인쇄합니다.
- 구조체 멤버 연령 값에 액세스하고 이를 다른 텍스트와 함께 콘솔에 인쇄합니다.
- 함수 본문의 끝입니다.
의 제한 C++ 구조
구조의 한계는 다음과 같습니다.
- 구조체 데이터 유형은 내장 데이터 유형처럼 처리될 수 없습니다.
- Opera+ -와 같은 토르와 다른 것들은 사용할 수 없습니다 구조 변수.
- 구조는 데이터 숨기기를 지원하지 않습니다. 구조체의 멤버는 해당 범위에 관계없이 모든 함수에서 액세스할 수 있습니다.
- 정적 멤버는 구조체 본문 내에서 선언할 수 없습니다.
- 생성자는 구조체 내부에서 생성될 수 없습니다.
제품 개요
- 구조체는 다양한 유형에 속하는 데이터 요소를 저장하는 데이터 구조입니다.
- 배열은 유사한 유형의 데이터 요소를 저장하는 반면 구조체는 다른 유형의 데이터 요소를 저장합니다.
- 데이터 요소의 값이 변경되지 않을 것으로 예상되는 경우 구조체를 사용해야 합니다.
- 구조체의 멤버에는 점(.) 연산자를 사용하여 액세스합니다.
- 구조체의 인스턴스를 만들어야 합니다.
- 를 만들려면 C++ struct, 우리는 struct 키워드를 사용합니다.
- 구조체를 가리키는 포인터는 일반 유형을 가리키는 포인터가 생성되는 방식과 유사하게 생성됩니다.
- 구조체는 일반 함수가 전달되는 것과 동일한 방식으로 함수에 인수로 전달될 수 있습니다.