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;
}

출력:

구조체 멤버에 액세스

다음은 코드의 스크린샷입니다.

구조체 멤버에 액세스

코드 설명 :

  1. 정의된 기능을 사용하려면 프로그램에 iostream 헤더 파일을 포함하세요.
  2. 클래스를 호출하지 않고 사용하려면 std 네임스페이스를 포함하세요.
  3. Person이라는 구조체를 만듭니다.
  4. 구조체 본문의 시작입니다.
  5. 정수 유형의 citizenship이라는 구조체 멤버를 만듭니다.
  6. 정수 유형의 age라는 구조체 멤버를 만듭니다.
  7. 구조체 본문의 끝입니다.
  8. main() 함수를 호출합니다. 프로그램 로직은 이 함수의 본문 내에 추가되어야 합니다.
  9. Person 구조체의 인스턴스를 만들고 이름을 p로 지정합니다.
  10. 구조체 멤버 시민권의 값을 1로 설정합니다.
  11. 구조체 멤버 연령 값을 27로 설정합니다.
  12. 다른 텍스트와 함께 콘솔에 구조체 멤버 시민권의 값을 인쇄합니다.
  13. 다른 텍스트와 함께 콘솔에 구조체 멤버 age 값을 인쇄합니다.
  14. 프로그램이 성공적으로 실행되면 값을 반환해야 합니다.
  15. 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;
}

출력:

구조에 대한 포인터

다음은 코드의 스크린샷입니다.

구조에 대한 포인터

코드 설명 :

  1. 해당 기능을 사용하려면 프로그램에 iostream 헤더 파일을 포함시킵니다.
  2. 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함하세요.
  3. Length라는 구조체를 만듭니다.
  4. 구조체 길이의 본문 시작입니다.
  5. 정수 데이터 유형의 미터라는 구조체 멤버를 만듭니다.
  6. 정수 유형의 cm라는 구조체 멤버를 만듭니다.
  7. 구조체 길이의 본문 끝입니다.
  8. main() 함수를 호출합니다.
  9. main() 함수 본문의 시작입니다.
  10. 포인터 변수 *ptr과 길이 유형의 일반 변수 l을 만듭니다.
  11. 변수 l의 주소를 우리의 포인터 변수.
  12. 사용자에게 변수 미터 값을 입력하라는 메시지를 콘솔에 표시합니다.
  13. 사용자가 키보드를 통해 입력한 값을 읽습니다. 여기서는 포인터 변수를 사용하여 멤버 함수 metres에 액세스합니다.
  14. 사용자에게 가변 센티미터 값을 입력하라는 메시지를 콘솔에 표시합니다.
  15. 사용자가 키보드를 통해 입력한 값을 읽습니다. 멤버 함수 cm는 여기서 포인터 변수를 사용하여 액세스됩니다.
  16. 사용자가 읽은 값을 다른 텍스트와 함께 콘솔에 표시합니다.
  17. 프로그램은 성공적으로 실행되면 값을 반환해야 합니다.
  18. 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;
}

출력:

함수 인수로서의 구조체

다음은 코드의 스크린샷입니다.

함수 인수로서의 구조체

코드 설명 :

  1. iostream 헤더 파일을 파일에 포함시킵니다. 그러면 오류 없이 해당 기능을 사용할 수 있습니다.
  2. 클래스를 사용하려면 프로그램에 std 네임스페이스를 포함하세요. 클래스를 사용하기 위해 네임스페이스를 호출할 필요는 없습니다.
  3. Person이라는 구조체를 만듭니다.
  4. Person 구조체의 본문 시작입니다.
  5. 구조체 Person의 멤버를 만듭니다. 구성원의 이름은 citizenship이고 정수 유형입니다.
  6. 구조체 Person의 멤버를 만듭니다. 멤버 이름은 age이고 정수 유형입니다.
  7. Person 구조체의 본문 끝입니다.
  8. Person 구조체의 인스턴스인 p를 인수로 사용하는 함수를 만듭니다.
  9. 주요 함수를 호출합니다. {는 main() 함수 본문의 시작을 표시합니다.
  10. Person 구조체의 인스턴스를 만들고 이름을 p로 지정합니다.
  11. 구조체의 인스턴스인 p를 사용하고 값 1을 할당하여 구조체 멤버 변수 citizenship에 액세스합니다.
  12. 구조체의 인스턴스인 p를 사용하고 값 27을 할당하여 구조체 멤버 변수 age에 액세스합니다.
  13. 함수를 호출하고 Person 구조체의 인스턴스인 p를 인수로 전달합니다.
  14. 함수는 성공적으로 실행되면 값을 반환해야 합니다.
  15. main() 함수 본문의 끝입니다.
  16. 함수의 본문을 만듭니다.
  17. 함수 본문의 시작입니다.
  18. 구조체 멤버 시민권 값에 액세스하고 이를 다른 텍스트와 함께 콘솔에 인쇄합니다.
  19. 구조체 멤버 연령 값에 액세스하고 이를 다른 텍스트와 함께 콘솔에 인쇄합니다.
  20. 함수 본문의 끝입니다.

의 제한 C++ 구조

구조의 한계는 다음과 같습니다.

  • 구조체 데이터 유형은 내장 데이터 유형처럼 처리될 수 없습니다.
  • Opera+ -와 같은 토르와 다른 것들은 사용할 수 없습니다 구조 변수.
  • 구조는 데이터 숨기기를 지원하지 않습니다. 구조체의 멤버는 해당 범위에 관계없이 모든 함수에서 액세스할 수 있습니다.
  • 정적 멤버는 구조체 본문 내에서 선언할 수 없습니다.
  • 생성자는 구조체 내부에서 생성될 수 없습니다.

제품 개요

  • 구조체는 다양한 유형에 속하는 데이터 요소를 저장하는 데이터 구조입니다.
  • 배열은 유사한 유형의 데이터 요소를 저장하는 반면 구조체는 다른 유형의 데이터 요소를 저장합니다.
  • 데이터 요소의 값이 변경되지 않을 것으로 예상되는 경우 구조체를 사용해야 합니다.
  • 구조체의 멤버에는 점(.) 연산자를 사용하여 액세스합니다.
  • 구조체의 인스턴스를 만들어야 합니다.
  • 를 만들려면 C++ struct, 우리는 struct 키워드를 사용합니다.
  • 구조체를 가리키는 포인터는 일반 유형을 가리키는 포인터가 생성되는 방식과 유사하게 생성됩니다.
  • 구조체는 일반 함수가 전달되는 것과 동일한 방식으로 함수에 인수로 전달될 수 있습니다.