산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

예제가 있는 C++ 구조체

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

STRUCT 서로 다른 데이터 유형의 요소를 함께 저장하는 데 사용할 수 있는 C++ 데이터 구조입니다. C++에서 구조체는 사용자 정의 데이터 유형입니다. 이 구조는 단일 데이터 유형 아래 서로 다른 데이터 유형의 항목을 그룹화하기 위한 데이터 유형을 생성합니다.

예:

누군가, 이름, 시민권 및 나이에 대한 정보를 저장해야 한다고 가정합니다. 이름, 시민권, 나이와 같은 변수를 생성하여 데이터를 별도로 저장할 수 있습니다.

그러나 앞으로 많은 사람에 대한 정보를 저장해야 할 수도 있습니다. 그것은 다른 개인에 대한 변수가 생성된다는 것을 의미합니다. 예를 들어 name1, citizen1, 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은 세 개의 멤버가 있는 구조입니다. 구성원에는 이름, 시민권 및 나이가 포함됩니다. 1개의 멤버는 char 데이터 타입이고, 나머지 2개는 구조체 생성 시 정수로 메모리를 할당하지 않는다. 메모리는 구조체에 변수가 추가된 후에만 할당됩니다.

구조체 인스턴스 생성

위의 예에서 Person이라는 구조체를 만들었습니다. 다음과 같이 구조체 변수를 생성할 수 있습니다.

Person p;

p는 Person 유형의 구조체 변수입니다. 이 변수를 사용하여 구조체의 멤버에 액세스할 수 있습니다.

구조체 멤버 액세스

구조체 멤버에 액세스하려면 구조체의 인스턴스와 점(.) 연산자를 사용합니다. 예를 들어, Person 구조체의 구성원 연령에 액세스하려면:

p.age = 27;

구조체의 인스턴스 p를 사용하여 구조체 Person의 멤버 연령에 액세스했습니다. 그런 다음 회원 연령 값을 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. 정수 유형의 시민이라는 이름의 구조체 멤버를 만듭니다.
  6. 정수 유형의 age라는 구조체 멤버를 만듭니다.
  7. 구조체 본문의 끝입니다.
  8. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 로직을 추가해야 합니다.
  9. Person 구조체의 인스턴스를 만들고 이름을 p로 지정합니다.
  10. 구조체 구성원 시민권 값을 1로 설정합니다.
  11. 구조체 구성원 연령 값을 27로 설정합니다.
  12. 구조체 멤버 시민권 값을 다른 텍스트와 함께 콘솔에 출력합니다.
  13. 구조체 구성원 연령 값을 다른 텍스트와 함께 콘솔에 출력합니다.
  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. 정수 데이터 유형의 meter라는 구조체 멤버를 만듭니다.
  6. 정수 유형의 센티미터라는 이름의 구조체 멤버를 만듭니다.
  7. 구조체 길이의 본문 끝
  8. main() 함수를 호출합니다.
  9. main() 함수 본문의 시작입니다.
  10. 길이 유형의 포인터 변수 *ptr 및 일반 변수 l을 만듭니다.
  11. 변수 l의 주소를 포인터 변수에 저장합니다.
  12. 사용자에게 가변 미터 값을 입력하도록 요청하는 메시지를 콘솔에 표시합니다.
  13. 사용자가 키보드를 통해 입력한 값을 읽습니다. 멤버 함수 meter는 포인터 변수를 사용하여 여기에서 액세스됩니다.
  14. 사용자에게 가변 센티미터 값을 입력하도록 요청하는 메시지를 콘솔에 표시합니다.
  15. 사용자가 키보드를 통해 입력한 값을 읽습니다. 여기서 centimeters 멤버 함수는 포인터 변수를 사용하여 액세스합니다.
  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 구조체의 멤버를 만듭니다. 회원의 이름은 시민권이며 정수 유형입니다.
  6. Person 구조체의 멤버를 만듭니다. 멤버의 이름은 age이고 정수 유형입니다.
  7. Person 구조체 본문의 끝입니다.
  8. Person 구조체의 인스턴스를 인수로 사용하는 함수를 만듭니다.
  9. 메인 함수를 호출합니다. {는 main() 함수 본문의 시작을 표시합니다.
  10. Person 구조체의 인스턴스를 만들고 이름을 p로 지정합니다.
  11. 구조체 p의 인스턴스를 사용하여 구조체 멤버 변수 시민권에 액세스하고 값 1을 할당합니다.
  12. 구조체 p의 인스턴스를 사용하여 구조체 멤버 변수 age에 액세스하고 값 27을 할당합니다.
  13. 함수를 호출하고 구조체 Person의 인스턴스인 p를 인수로 전달합니다.
  14. 함수는 성공적으로 실행되면 값을 반환해야 합니다.
  15. main() 함수 본문의 끝
  16. 함수의 본문을 만듭니다.
  17. 함수 본문의 시작입니다.
  18. 구조체 구성원 시민권 값에 액세스하고 다른 텍스트와 함께 콘솔에 인쇄합니다.
  19. 구조체 멤버 연령 값에 액세스하고 다른 텍스트와 함께 콘솔에 인쇄합니다.
  20. 함수 본문의 끝입니다.

C++ 구조의 한계

다음은 구조의 제한 사항입니다.

요약:


C 언어

  1. C 구조체와 포인터
  2. C++ do… while 루프 예제
  3. EXAMPLE이 있는 C++ Switch Case 문
  4. 예제를 사용한 C++ 배열 동적 할당
  5. 예제가 있는 C++ 포인터
  6. C++ Char 데이터 유형(예제 포함)
  7. 예제를 사용한 C++ 연산자 오버로딩
  8. 예제가 있는 C++의 std::list
  9. 프로그램 예제가 있는 C++ 함수
  10. 구조체와 클래스의 차이점:C++ 예제로 설명