차례:
비디오: [C강좌] 초보자를 위한 기초 C 언어 강좌 #13 : 포인터 (1) 2024
C 프로그래밍 언어 구조를 다 변수 변수, 변수 또는 여러 변수가 하나로 묶어서 생각할 수 있습니다. 구조를 사용하여 복잡한 정보를 저장하거나 액세스합니다. 그렇게하면 다양한 int, char, float 변수 및 심지어 배열을 하나의 깔끔한 패키지로 유지할 수 있습니다.
기본 사항 구조체
구조체는 가변 형식이 아닙니다. 대신 여러 변수 유형을 보유하는 프레임으로 생각하십시오. 여러면에서 구조는 데이터베이스의 레코드와 유사합니다. 예:
이름 나이 갬블 부채
이 세 가지 항목은 데이터베이스 레코드의 필드 일 수 있지만 구조의 멤버 일 수도 있습니다. 이름은 문자열이 될 수 있습니다. 나이, 정수; 및 도박 부채, 부호없는 부동 소수점 값 이러한 레코드가 C에서 구조로 보이는 방법은 다음과 같습니다.
struct record {char name [32]; int 나이; 부채 빚;};
struct는 새로운 구조를 도입, 정의 또는 생성하는 C 언어 키워드입니다.
record는 새로 생성되는 구조의 이름입니다.
중괄호 안에 구조체의 멤버, 명명 된 구조체에 포함 된 변수가 있습니다. 레코드 구조 유형에는 문자열 이름, age라는 이름의 int 및 float 값인 debt이라는 세 가지 멤버 변수가 포함되어 있습니다.
구조체를 사용하려면 생성 한 구조체 유형의 구조체 변수를 선언해야합니다. 예:
구조 기록 인간;
이 라인은 레코드 구조 타입의 새로운 변수를 선언한다. 새 변수의 이름은 human 입니다.
구조체 자체를 정의 할 때 구조체 변수를 선언 할 수도 있습니다. 예:
struct record {char name [32]; int 나이; 부채 빚;} 인간;
이 문장은 레코드 구조 를 정의하고 는 레코드 구조 변수 인 human 을 선언합니다. 해당 구조 유형의 여러 변수도 작성할 수 있습니다.
struct record {char name [32]; int 나이; 부채 빚;} 계산서, 메리, 단, susie;
네 개의 레코드 구조 변수가이 예제에서 생성됩니다. 모든 변수는 구조체에 정의 된 세 멤버에 대한 액세스 권한을가집니다.
구조 변수의 멤버에 액세스하려면 마침표를 사용합니다. 마침표는 멤버 연산자 입니다. 구조체 변수 이름을 멤버 이름과 연결합니다. 예:
printf ("피해자: % sn", 청구서 이름);
이 문은 bill 구조 변수의 이름 멤버를 참조합니다. char 배열은 다른 char 배열과 같이 코드에서 사용할 수 있습니다. 구조 변수에있는 다른 멤버는 개별 카운터 파트와 마찬가지로 사용할 수 있습니다.
dan.연령 = 32;
구조체 채우기 방법
다른 변수와 마찬가지로 구조체 변수를 만들 때 값을 할당 할 수 있습니다. 먼저 구조 유형을 정의한 다음 멤버 변수가 미리 설정된 구조 변수를 선언해야합니다. 사전 설정 값 선언이 구조체에 정의 된 멤버의 순서 및 유형과 일치하는지 확인하십시오 (초기화 된 구조 선언 참조).
초기화 된 구조 선언하기
#include int main () {struct president {char name [40]; int year;}; struct first = { "George Washington", 1789}; printf ("최초의 대통령은 % sn", 첫 번째 이름 임); printf ("그는 % dn에서 취임했습니다.");
연습 1 : 초기화 된 구조 선언에서 편집기로 소스 코드를 입력하여 새 프로그램을 만듭니다. 빌드하고 실행하십시오.
구조체를 선언하고 하나의 명령문으로 초기화 할 수도 있습니다.
struct president {char name [40]; int year;} first = { "George Washington", 1789};
연습 2 : 운동 1에서 소스 코드를 수정하여 구조와 변수가 선언되고 하나의 문장으로 초기화됩니다.
구조체를 선언하고 방금 표시된 것처럼 구조체 변수를 초기화 할 수 있지만 그 트릭을 한 번만 제거 할 수 있습니다. 선언 된 기법을 사용하여 두 번째 구조체 변수를 선언 할 수는 없으며, 이는 초기화 된 구조 선언에 나와 있습니다.
연습 3 : 1797 년 취임 한 두 번째 회장 존 애덤스에 대한 정보로 구조를 초기화하면서 다른 두 번째 구조 변수를 코드에 추가합니다. 두 구조의 내용을 표시합니다.
구조체 배열 만들기
개별 구조체 변수를 하나씩 생성하는 것은 일련의 개별 변수 유형을 만드는 것만큼이나 지루하고 낭비입니다. 다중 구조의 솔루션은 여러 개의 개별 변수와 같습니다: 배열.
구조체 배열은 다음과 같이 선언됩니다.
struct score players [4];
이 문장은 점수 구조의 배열을 선언합니다. 배열은 player라는 이름을 가지며 요소로 4 개의 구조 변수를 포함합니다.
배열의 구조는 배열과 구조 표기법의 조합을 사용하여 액세스됩니다. 예:
플레이어 [2]. name
앞 줄의 변수는 플레이어 구조 배열의 세 번째 요소에있는 name 멤버에 액세스합니다. 예, 첫 번째 요소는
player [0]과 같이 참조되므로 세 번째 요소입니다. name
배열은 요소 1이 아니라 요소 0으로 번호 매기기를 시작합니다.
구조체 배열의 10 행은 4 개의 점수 구조로 구성된 배열을 선언합니다. 배열의 이름은 player입니다. 13 ~ 19 행은 배열의 각 구조를 채 웁니다. 21 ~ 27 행은 각 구조의 멤버 값을 표시합니다.
구조체의 배열
#include int main () {struct scores {char name [32]; int score;}; 구조사 점수 선수 [4]; int x; for (x = 0; x <4; x ++) {printf ("플레이어 % d 입력:", x + 1); scanf ("% s", player [x]).이름); printf ("점수 입력:"); scanf ("% d", & player [x]. score);} puts ("Player Info"); printf ("# tNametScoren"); (x = 0, x <4, x ++) {printf ("% dt % st % 5dn", x + 1, 플레이어 [x].
연습 4 : Arrays of Structures에서 소스 코드를 편집기에 입력하십시오. 프로그램을 빌드하고 실행하십시오. 점수가 5 자리 미만으로 유지되면 제대로 정렬됩니다.
운동 5 : 배열 구조에 코드를 추가하여 구조의 표시가 가장 높은 점수로 먼저 정렬되도록 정렬합니다. 예, 할 수 있습니다. 구조체의 배열을 정렬하면 다른 배열을 정렬하는 것처럼 작동합니다.
여기에 힌트가 있습니다. 솔루션의 27 행은 다음과 같습니다.
player [a] = player [b];
배열 요소를 바꿀 수있는 것처럼 구조체 배열 요소를 바꿀 수 있습니다. 구조체 변수의 멤버를 바꿀 필요는 없습니다.