C 언어의 구조체 사용법에 대한 자세한 설명
C 언어의 구조체 사용법에 대한 자세한 설명
C 언어에서는 구조체를 사용하여 다양한 유형의 데이터 집합을 저장할 수 있습니다. 구조체의 정의 형식은 다음과 같습니다.
struct 结构体名{ 结构体所包含的变量或数组 };
구조체는 여러 변수나 배열을 포함하는 모음입니다. 해당 유형은 같을 수도 있고 다를 수도 있습니다.
Recommend "c Language Tutorial"
아래 예를 참조하세요.
struct stu{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在学习小组 float score; //成绩 };
stu는 이름, 번호, 나이, 그룹, 점수 등 5개의 멤버가 포함된 구조 이름입니다. 구조체 멤버는 초기화할 수 없다는 점을 제외하면 변수 및 배열과 동일한 방식으로 정의됩니다.
중괄호 뒤의 세미콜론에 주의하세요. 빠질 수 없습니다. 이는 완전한 문장입니다.
구조는 프로그래머가 직접 정의하고 여러 다른 유형의 데이터를 포함할 수 있는 데이터 유형이기도 합니다.
int, float, char 등과 같은 데이터 유형은 C 언어 자체에서 제공되며 분할할 수 없습니다. 이를 기본 데이터 유형이라고 하며 구조에는 다른 구조뿐만 아니라 여러 기본 유형의 데이터가 포함될 수 있습니다. 이를 복합 데이터 유형 또는 구성된 데이터 유형이라고 부릅니다.
구조 변수
구조는 데이터 유형이므로 이를 사용하여 변수를 정의할 수 있습니다. 예:
struct stu stu1, stu2;
는 두 개의 변수 stu1과 stu2를 정의합니다. 둘 다 stu 유형이고 5개의 멤버로 구성됩니다. struct 키워드는 누락될 수 없습니다.
stu는 "템플릿"과 같으며 정의된 변수는 동일한 속성을 갖습니다. 구조는 "도면"으로, 구조 변수는 "부품"으로 비교할 수도 있습니다. 동일한 도면을 기반으로 생산된 부품은 동일한 특성을 갖습니다.
구조를 정의하는 동안 구조 변수도 정의할 수 있습니다.
char *name; //Name
int num; //Student number
int age; /Study group
float Score; //Score
} stu1, stu2;
구조 정의 끝에 변수를 넣으세요.
stu1, stu2 두 개의 변수만 필요하고 나중에 다른 변수를 정의하기 위해 구조체 이름을 사용할 필요가 없다면 아래와 같이 정의할 때 구조체 이름을 지정할 필요가 없습니다.
struct { //stu A Char *name; // 이름
int num; // 학교 번호
int Age; // 나이
char group; // grade} stu1, stu2 ;
작성은 간단하지만 구조체 이름이 없기 때문에 나중에 새로운 변수를 정의하는 데 구조체를 사용할 수 없습니다.
이론적으로 구조체의 각 멤버는 메모리에 연속적으로 저장되는데 이는 배열과 매우 유사합니다. 예를 들어 위의 구조체 변수 stu1과 stu2의 메모리 분포는 아래 그림과 같으며 전체 메모리를 차지합니다. 4+4+4+1+ 4 = 17바이트입니다.
그러나 컴파일러의 특정 구현에서는 각 멤버 사이에 간격이 있을 수 있습니다. stu1과 stu2의 경우 멤버 변수 그룹과 점수 사이에 3바이트 공백이 채워져 있습니다(아래 그림 참조). 이런 식으로 계산하면 stu1과 stu2는 실제로 17 + 3 = 20바이트를 차지합니다.
멤버 변수 간 "균열"이 발생하는 이유에 대해서는 "C 언어 메모리 필수 사항" 항목의 "어드레싱 효율성 향상을 위한 C 언어 메모리 정렬" 섹션에서 자세히 설명하겠습니다.
구성원 획득 및 할당
구조도 배열과 유사하며 데이터의 집합이므로 전체적인 사용에는 큰 의미가 없습니다. 배열은 단일 요소를 얻기 위해 아래 첨자 [ ]를 사용하고, 단일 요소를 얻기 위해서는 점을 사용합니다. 구조 멤버를 얻는 일반적인 형식은 다음과 같습니다.
结构体变量名.成员名;
이 방법으로 멤버의 값을 얻을 수 있으며 멤버에 값을 할당할 수도 있습니다.
#include <stdio.h> int main(){ struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1; //给结构体成员赋值 stu1.name = "Tom"; stu1.num = 12; stu1.age = 18; stu1.group = 'A'; stu1.score = 136.5; //读取结构体成员的值 printf("%s的学号是%d,年龄是%d,在%c组,今年的成绩是%.1f!\n", stu1.name, stu1.num, stu1.age, stu1.group, stu1.score); return 0; }
작업 결과:
Tom의 학생 번호는 12입니다. 나이는 18세, A조에 속해 있으며 올해 득점은 136.5점입니다!
멤버에게 하나씩 값을 할당하는 것 외에도 정의 중에 전체적으로 값을 할당할 수도 있습니다. 예:
struct{ char *name; //姓名 int num; //学号 int age; //年龄 char group; //所在小组 float score; //成绩 } stu1, stu2 = { "Tom", 12, 18, 'A', 136.5 };
그러나 전체 할당은 사용 중에 구조 변수를 정의할 때로 제한됩니다. 멤버에게 하나씩만 값을 할당할 수 있습니다. 이는 배열의 정의와 매우 유사합니다.
구조는 변수 생성을 위한 템플릿이며 메모리 공간을 차지하지 않는 사용자 정의 데이터 유형입니다. 구조 변수는 실제 데이터만 포함하고 저장하려면 메모리 공간이 필요합니다.
프로그래밍과 관련된 더 많은 내용은 PHP 중국어 홈페이지
프로그래밍 입문칼럼을 주목해주세요!
위 내용은 C 언어의 구조체 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어 데이터 구조 : 트리 및 그래프의 데이터 표현은 노드로 구성된 계층 적 데이터 구조입니다. 각 노드에는 데이터 요소와 하위 노드에 대한 포인터가 포함되어 있습니다. 이진 트리는 특별한 유형의 트리입니다. 각 노드에는 최대 두 개의 자식 노드가 있습니다. 데이터는 structtreenode {intdata; structtreenode*왼쪽; structReenode*오른쪽;}을 나타냅니다. 작업은 트리 트래버스 트리 (사전 조정, 인 순서 및 나중에 순서) 검색 트리 삽입 노드 삭제 노드 그래프는 요소가 정점 인 데이터 구조 모음이며 이웃을 나타내는 오른쪽 또는 무의미한 데이터로 모서리를 통해 연결할 수 있습니다.

파일 작동 문제에 대한 진실 : 파일 개방이 실패 : 불충분 한 권한, 잘못된 경로 및 파일이 점유 된 파일. 데이터 쓰기 실패 : 버퍼가 가득 차고 파일을 쓸 수 없으며 디스크 공간이 불충분합니다. 기타 FAQ : 파일이 느리게 이동, 잘못된 텍스트 파일 인코딩 및 이진 파일 읽기 오류.

C 언어 멀티 스레딩 프로그래밍 안내서 : 스레드 생성 : pthread_create () 함수를 사용하여 스레드 ID, 속성 및 스레드 함수를 지정합니다. 스레드 동기화 : 뮤텍스, 세마포어 및 조건부 변수를 통한 데이터 경쟁 방지. 실제 사례 : 멀티 스레딩을 사용하여 Fibonacci 번호를 계산하고 여러 스레드에 작업을 할당하고 결과를 동기화하십시오. 문제 해결 : 프로그램 충돌, 스레드 정지 응답 및 성능 병목 현상과 같은 문제를 해결합니다.

알고리즘은 문제를 해결하기위한 일련의 지침이며 실행 속도 및 메모리 사용량은 다양합니다. 프로그래밍에서 많은 알고리즘은 데이터 검색 및 정렬을 기반으로합니다. 이 기사에서는 여러 데이터 검색 및 정렬 알고리즘을 소개합니다. 선형 검색은 배열 [20,500,10,5,100,1,50]이 있으며 숫자 50을 찾아야한다고 가정합니다. 선형 검색 알고리즘은 대상 값이 발견되거나 전체 배열이 통과 될 때까지 배열의 각 요소를 하나씩 점검합니다. 알고리즘 플로우 차트는 다음과 같습니다. 선형 검색의 의사 코드는 다음과 같습니다. 각 요소를 확인하십시오. 대상 값이 발견되는 경우 : true return false clanue 구현 : #includeintmain (void) {i 포함

C에서 카운트 다운을 출력하는 방법? 답변 : 루프 명령문을 사용하십시오. 단계 : 1. 변수 n을 정의하고 카운트 다운 번호를 출력에 저장합니다. 2. n이 1보다 작을 때까지 n을 지속적으로 인쇄하려면 while 루프를 사용하십시오. 3. 루프 본체에서 n의 값을 인쇄하십시오. 4. 루프가 끝나면 n을 1 씩 빼기 위해 다음 작은 상호 상호를 출력합니다.

C 언어 데이터 구조 : 인공 지능 분야에서 데이터 구조의 주요 역할 개요 인공 지능 분야에서 데이터 구조는 다량의 데이터를 처리하는 데 중요합니다. 데이터 구조는 데이터를 구성하고 관리하고 알고리즘을 최적화하며 프로그램 효율성을 향상시키는 효과적인 방법을 제공합니다. 공통 데이터 구조는 일반적으로 C 언어로 사용되는 데이터 구조에는 다음이 포함됩니다. 배열 : 동일한 유형의 연속 저장된 데이터 항목 세트. 구조 : 다양한 유형의 데이터를 함께 구성하고 이름을 제공하는 데이터 유형. 링크 된 목록 : 데이터 항목이 포인터로 함께 연결되는 선형 데이터 구조. 스택 : 최후의 첫 번째 (LIFO) 원칙을 따르는 데이터 구조. 대기열 : 첫 번째 첫 번째 (FIFO) 원칙을 따르는 데이터 구조. 실제 사례 : 그래프 이론의 인접 테이블은 인공 지능입니다.

C 언어 기능은 재사용 가능한 코드 블록입니다. 입력, 작업을 수행하며 결과를 반환하여 모듈 식 재사성을 향상시키고 복잡성을 줄입니다. 기능의 내부 메커니즘에는 매개 변수 전달, 함수 실행 및 리턴 값이 포함됩니다. 전체 프로세스에는 기능이 인라인과 같은 최적화가 포함됩니다. 좋은 기능은 단일 책임, 소수의 매개 변수, 이름 지정 사양 및 오류 처리 원칙에 따라 작성됩니다. 함수와 결합 된 포인터는 외부 변수 값 수정과 같은보다 강력한 기능을 달성 할 수 있습니다. 함수 포인터는 함수를 매개 변수 또는 저장 주소로 전달하며 함수에 대한 동적 호출을 구현하는 데 사용됩니다. 기능 기능과 기술을 이해하는 것은 효율적이고 유지 가능하며 이해하기 쉬운 C 프로그램을 작성하는 데 핵심입니다.

C 언어 함수는 재사용 가능한 코드 블록이며 처리를위한 매개 변수를 수신하며 결과를 반환합니다. 스위스 육군 나이프와 유사하며 강력하며 신중하게 사용해야합니다. 함수에는 형식 정의, 매개 변수, 반환 값 및 기능 본체와 같은 요소가 포함됩니다. 고급 사용법에는 기능 포인터, 재귀 함수 및 콜백 기능이 포함됩니다. 일반적인 오류는 유형 불일치이며 프로토 타입을 선언하는 것을 잊는 것입니다. 디버깅 기술에는 변수 인쇄 및 디버거 사용이 포함됩니다. 성능 최적화는 인라인 함수를 사용합니다. 기능 설계는 단일 책임의 원칙을 따라야합니다. C 언어 기능의 숙련도는 프로그래밍 효율성과 코드 품질을 크게 향상시킬 수 있습니다.
