C++ 예제가 있는 구조체

⚡ 스마트 요약

구조 C++ 이는 서로 다른 데이터 유형의 요소들을 하나의 이름으로 그룹화하는 사용자 정의 데이터 유형으로, 하나의 변수에 사람 이름, 국적, 나이와 같은 관련 값들을 함께 저장할 수 있게 해줍니다.

  • 📦 다양한 데이터 유형: 구조체는 서로 다른 데이터 유형을 가진 변수들을 사용자가 정의한 하나의 이름으로 그룹화합니다.
  • 🔑 구조체 키워드: `struct` 키워드를 사용하여 구조체를 정의한 다음, 중괄호 안에 멤버 목록을 나열하세요.
  • 🧱 인스턴스 생성 중: 글쓴이 p는 구조체 변수를 만들고 해당 변수에 메모리를 할당합니다.
  • 🎯 점 연산자: 인스턴스를 통해 멤버를 읽거나 설정할 수 있습니다. 예를 들어 p.age = 27과 같이 설정할 수 있습니다.
  • 포인터와 함수: 구조체는 포인터와 함께 작동하며 일반 인자처럼 함수에 전달됩니다.
  • 🤖 AI 지원: GitHub Copilot 및 기타 AI 도우미는 주석에서 구조체 정의와 멤버 접근 방식을 생성합니다.

C++ 구조

구조체 란 무엇입니까? C++?

구조물이란 C++ 서로 다른 데이터 유형의 요소를 함께 저장하는 데 사용할 수 있는 데이터 구조입니다. ~ 안에 C++구조체는 사용자가 정의한 데이터 유형입니다. 구조체는 그룹에 대한 데이터 유형을 생성합니다.ping 서로 다른 데이터 유형의 항목을 하나의 데이터 유형 아래에 배치합니다.

예 :

누군가의 이름, 시민권, 나이에 대한 정보를 저장해야 한다고 가정해 보겠습니다. 이름, 시민권, 나이 등의 변수를 만들어 데이터를 별도로 저장할 수 있습니다.

하지만 앞으로는 여러 사람에 대한 정보를 저장해야 할 수도 있습니다. 즉, 각 개인에 대한 변수가 여러 개 생성될 수 있다는 뜻입니다. 예를 들어 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;
}

출력:

구조체 멤버에 액세스

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

구조체 멤버에 액세스

Code 설명 :

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

출력:

구조에 대한 포인터

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

구조에 대한 포인터

Code 설명 :

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

출력:

함수 인수로서의 구조체

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

함수 인수로서의 구조체

Code 설명 :

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

자주 묻는 질문

In C++ 구조체와 클래스는 거의 동일합니다. 유일한 차이점은 기본 접근 권한입니다. 구조체 멤버는 기본적으로 공개(public)인 반면, 클래스 멤버는 비공개(private)입니다. 둘 다 멤버 함수, 생성자 및 상속을 지원합니다.

AC 구조체는 데이터만 저장하며, 각 변수 선언 앞에 반드시 struct를 붙여야 합니다. C++ 구조체는 멤버 함수, 생성자 및 접근 지정자를 포함할 수 있으며, 변수를 선언할 때 struct 키워드는 선택 사항입니다.

구조체를 선언한 다음, 예를 들어 Person people[3]과 같이 구조체의 배열을 정의합니다. 각 요소는 완전한 구조체이며 people[0].age를 통해 멤버에 접근할 수 있습니다. 구조체 배열은 동일한 유형의 여러 레코드를 함께 저장합니다.

중첩 구조는 다른 구조체 내부에 멤버로 선언된 구조체입니다. 날짜(Date) 구조체를 직원(Employee) 구조체 내부에 넣는 것처럼, 관련된 하위 데이터를 그룹화합니다. 내부 멤버는 점 연산자(.)를 연결하여 접근할 수 있습니다.

크기는 대략 멤버 개수의 합에 컴파일러가 정렬을 위해 추가하는 패딩이 더해진 값이므로, sizeof는 실제 총합보다 클 수 있습니다. 멤버 함수는 크기를 더하지 않습니다. 멤버를 크기 순으로 정렬하면 불필요한 패딩을 줄일 수 있습니다.

구조체에 대한 포인터를 가지고 있을 때는 화살표 연산자(*ptr).age 대신 단축 연산자인 ptr->age를 사용하면 동일한 멤버 값을 읽을 수 있습니다. 점 연산자(.)는 포인터가 아닌 구조체의 인스턴스에 직접 적용됩니다.

네. AI 코딩 도우미는 간단한 질문이나 의견을 완전한 코드로 변환해 줍니다. C++ 구조체에는 멤버, 생성자 및 필드 접근 방식이 포함됩니다. AI가 프로젝트별 요구 사항을 놓칠 수 있으므로 생성된 데이터 유형과 정렬 상태를 항상 검토하십시오.

예. GitHub 부조종사 편집기에서 입력하는 동안 구조체 정의, 멤버 변수, 점 또는 화살표 접근 방식을 제안합니다. 반복적인 상용구 코드를 잘 처리하지만, 컴파일하기 전에 유형, 패딩 및 논리를 검증해야 합니다.

이 게시물을 요약하면 다음과 같습니다.