logo

C++의 구조

데이터 유형이 유사하든 유사하지 않든 간에 데이터 그룹을 저장해야 하는 상황이 자주 발생합니다. 우리는 인접한 메모리 위치에 유사한 데이터 유형의 데이터 세트를 저장하는 데 사용되는 C++의 배열을 보았습니다.
배열과 달리, C++의 구조 유사하지 않은 데이터 유형의 항목 그룹을 저장하는 데 사용되는 사용자 정의 데이터 유형입니다.

구조란 무엇입니까?



구조는 C/C++의 사용자 정의 데이터 유형입니다. 구조는 다양한 유형의 항목을 단일 유형으로 그룹화하는 데 사용할 수 있는 데이터 유형을 생성합니다.

C++의 구조

구조를 만드는 방법은 무엇입니까?



'struct' 키워드는 구조를 만드는 데 사용됩니다. 구조를 생성하는 일반적인 구문은 다음과 같습니다.

struct structureName{ member1; member2; member3; . . . memberN; };>

C++의 구조에는 두 가지 유형의 멤버가 포함될 수 있습니다.

    데이터 멤버: 이 멤버는 일반 C++ 변수입니다. C++에서는 다양한 데이터 유형의 변수를 사용하여 구조를 만들 수 있습니다. 멤버 함수: 이 멤버는 일반적인 C++ 함수입니다. 변수와 함께 구조 선언 내에 함수를 포함할 수도 있습니다.

:



C의 2차원 배열 프로그램

C++




// Data Members> int> roll;> int> age;> int> marks;> > // Member Functions> void> printDetails()> {> >cout<<>'Roll = '><' '; cout<<'Age = '< ' '; cout<<'Marks = '< }>

>

>

위의 구조에서 데이터 멤버는 저장할 세 개의 정수 변수입니다. 롤 번호, 연령 및 마크 모든 학생의 회원 기능은 다음과 같습니다. 인쇄세부사항() 위의 모든 학생 세부 정보를 인쇄합니다.

구조 변수를 선언하는 방법은 무엇입니까?

구조 변수는 구조 선언을 사용하여 선언하거나 기본 유형과 같은 별도의 선언으로 선언할 수 있습니다.

C++




// A variable declaration with structure declaration.> struct> Point> {> >int> x, y;> } p1;>// The variable p1 is declared with 'Point'> // A variable declaration like basic data types> struct> Point> {> >int> x, y;> };> int> main()> {> >struct> Point p1;>// The variable p1 is declared like a normal variable> }>

>

>

참고: C++에서는 변수 선언 전에 struct 키워드가 선택 사항입니다. C에서는 필수입니다.

구조체 멤버를 초기화하는 방법은 무엇입니까?
구조 멤버 수 없습니다 선언으로 초기화되었습니다. 예를 들어 다음 C 프로그램은 컴파일에 실패합니다.
그러나 C++11 이상에서는 올바른 것으로 간주됩니다.

C++




struct> Point> {> >int> x = 0;>// COMPILER ERROR: cannot initialize members here> >int> y = 0;>// COMPILER ERROR: cannot initialize members here> };>

>

>

위 오류의 이유는 간단합니다. 데이터 유형이 선언되면 해당 데이터 유형에 메모리가 할당되지 않습니다. 변수가 생성될 때만 메모리가 할당됩니다.

C++에서 선언을 사용하여 구조체 멤버를 초기화할 수 있습니다. 예를 들어 다음 C++ 프로그램은 오류 없이 성공적으로 실행됩니다.

C++

누가 학교를 만들었나




// In C++ We can Initialize the Variables with Declaration in Structure.> #include> using> namespace> std;> struct> Point {> >int> x = 0;>// It is Considered as Default Arguments and no Error is Raised> >int> y = 1;> };> int> main()> {> >struct> Point p1;> >// Accessing members of point p1> >// No value is Initialized then the default value is considered. ie x=0 and y=1;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y< // Initializing the value of y = 20; p1.y = 20; cout << 'x = ' << p1.x << ', y = ' << p1.y; return 0; } // This code is contributed by Samyak Jain>

>

>

 x=0, y=1 x=0, y=20>

구조체 멤버는 중괄호 '{}'를 사용하여 초기화할 수 있습니다. 예를 들어 다음은 유효한 초기화입니다.

C++




struct> Point {> >int> x, y;> };> int> main()> {> >// A valid initialization. member x gets value 0 and y> >// gets value 1. The order of declaration is followed.> >struct> Point p1 = { 0, 1 };> }>

>

>


구조 요소에 액세스하는 방법은 무엇입니까?
구조체 멤버는 점(.) 연산자를 사용하여 액세스됩니다.

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 0, 1 };> >// Accessing members of point p1> >p1.x = 20;> >cout <<>'x = '> << p1.x <<>', y = '> << p1.y;> >return> 0;> }>

>

>

산출

x = 20, y = 1>

구조체 배열이란 무엇입니까?

다른 기본 데이터 유형과 마찬가지로 구조 배열을 만들 수 있습니다.

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >// Create an array of structures> >struct> Point arr[10];> >// Access array members> >arr[0].x = 10;> >arr[0].y = 20;> >cout << arr[0].x <<>' '> << arr[0].y;> >return> 0;> }>

>

>

산출

10 20>


구조 포인터란 무엇입니까?
기본 유형과 마찬가지로 구조에 대한 포인터를 가질 수 있습니다. 구조체에 대한 포인터가 있는 경우 점(.) 연산자 대신 화살표( -> ) 연산자를 사용하여 멤버에 액세스합니다.

C++




#include> using> namespace> std;> struct> Point {> >int> x, y;> };> int> main()> {> >struct> Point p1 = { 1, 2 };> >// p2 is a pointer to structure p1> >struct> Point* p2 = &p1;> >// Accessing structure members using> >// structure pointer> >cout ' ' return 0; }>

>

>

산출

1 2>

구조체 멤버 정렬이란 무엇입니까?
보다 C++의 구조와 클래스의 차이점에 대해 자세히 알아보세요. .

Q2는 언제 시작해요?