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

C 구조체

C 구조체

이 튜토리얼에서는 예제를 통해 C 프로그래밍의 구조체 유형에 대해 배울 것입니다.

C 프로그래밍에서 구조체(또는 구조체)는 단일 이름 아래의 변수 모음(다른 유형일 수 있음)입니다.

<시간>

구조 정의

구조 변수를 생성하기 전에 데이터 유형을 정의해야 합니다. 구조체를 정의하려면 struct 키워드가 사용되었습니다.

구조체의 구문

struct structureName {
  dataType member1;
  dataType member2;
  ...
};

예를 들어,

struct Person {
  char name[50];
  int citNo;
  float salary;
};

여기에서 파생된 유형 struct Person 정의됩니다. 이제 이 유형의 변수를 만들 수 있습니다.

<시간>

구조체 변수 생성

struct일 때 유형이 선언되고 스토리지 또는 메모리가 할당되지 않습니다. 주어진 구조 유형의 메모리를 할당하고 작업하려면 변수를 생성해야 합니다.

구조 변수를 만드는 방법은 다음과 같습니다.

struct Person {
  // code
};

int main() {
  struct Person person1, person2, p[20];
  return 0;
}

struct를 만드는 또 다른 방법 변수:

struct Person {
   // code
} person1, person2, p[20];

두 경우 모두

<시간>

구조의 구성원 액세스

구조체의 멤버에 액세스하는 데 사용되는 연산자에는 두 가지 유형이 있습니다.

  1. . - 회원 운영자
  2. -> - 구조체 포인터 연산자(다음 튜토리얼에서 설명)

급여에 액세스하려고 한다고 가정해 보겠습니다. 사람2의 . 방법은 다음과 같습니다.

person2.salary
<시간>

예제 1:C++ 구조체

#include <stdio.h>
#include <string.h>

// create struct with person1 variable
struct Person {
  char name[50];
  int citNo;
  float salary;
} person1;

int main() {

  // assign value to name of person1
  strcpy(person1.name, "George Orwell");

  // assign values to other person1 variables
  person1.citNo = 1984;
  person1. salary = 2500;

  // print struct variables
  printf("Name: %s\n", person1.name);
  printf("Citizenship No.: %d\n", person1.citNo);
  printf("Salary: %.2f", person1.salary);

  return 0;
}

출력

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

이 프로그램에서는 struct를 만들었습니다. Person라는 이름의 . Person 변수도 생성했습니다. 이름이 person1임 .

main()에서 , Person에 정의된 변수에 값을 할당했습니다. person1 개체.

strcpy(person1.name, "George Orwell");
person1.citNo = 1984;
person1. salary = 2500;

strcpy()을 사용했습니다. person1.name에 값을 할당하는 함수 .

name 때문입니다. char입니다. 배열(C-문자열)이며 할당 연산자 =를 사용할 수 없습니다. 문자열을 선언한 후 함께 사용합니다.

마지막으로 person1의 데이터를 출력했습니다. .

<시간>

키워드 typedef

typedef를 사용합니다. 키워드를 사용하여 데이터 유형에 대한 별칭 이름을 만듭니다. 일반적으로 변수 선언 구문을 단순화하기 위해 구조와 함께 사용됩니다.

예를 들어 다음 코드를 살펴보겠습니다.

struct Distance{
  int feet;
  float inch;
};

int main() {
  struct Distance d1, d2;
}

typedef을 사용할 수 있습니다. 단순화된 구문으로 동등한 코드를 작성하려면:

typedef struct Distance {
  int feet;
  float inch;
} distances;

int main() {
  distances d1, d2;
}
<시간>

예시 2:C++ typedef

#include <stdio.h>
#include <string.h>

// struct with typedef person
typedef struct Person {
  char name[50];
  int citNo;
  float salary;
} person;

int main() {

  // create  Person variable
  person p1;

  // assign value to name of p1
  strcpy(p1.name, "George Orwell");

  // assign values to other p1 variables
  p1.citNo = 1984;
  p1. salary = 2500;

  // print struct variables
  printf("Name: %s\n", p1.name);
  printf("Citizenship No.: %d\n", p1.citNo);
  printf("Salary: %.2f", p1.salary);

  return 0;
}

출력

Name: George Orwell
Citizenship No.: 1984
Salary: 2500.00

여기에서는 typedef을 사용했습니다. Person 별칭 person을 생성하는 구조 .

// struct with typedef person
typedef struct Person {
  // code
} person;

이제 간단히 Person을 선언할 수 있습니다. person를 사용하는 변수 별칭:

// equivalent to struct Person p1
person p1;
<시간>

중첩 구조

C 프로그래밍에서 구조체 안에 구조체를 만들 수 있습니다. 예를 들어,

struct complex {
  int imag;
  float real;
};

struct number {
  struct complex comp;
  int integers;
} num1, num2;

img를 설정하고 싶다고 가정해 보겠습니다. num211 변수 . 방법은 다음과 같습니다.

num2.comp.imag = 11;
<시간>

예시 3:C++ 중첩 구조

#include <stdio.h>

struct complex {
  int imag;
  float real;
};

struct number {
  struct complex comp;
  int integer;
} num1;

int main() {

  // initialize complex variables
  num1.comp.imag = 11;
  num1.comp.real = 5.25;

  // initialize number variable
  num1.integer = 6;
	
  // print struct variables
  printf("Imaginary Part: %d\n", num1.comp.imag);
  printf("Real Part: %.2f\n", num1.comp.real);
  printf("Integer: %d", num1.integer);

  return 0;
}

출력

Imaginary Part: 11
Real Part: 5.25
Integer: 6
<시간>

C에서 구조체를 사용하는 이유

사람에 대한 정보(이름, 시민권 번호, 급여)를 저장하려고 한다고 가정합니다. 다른 변수 name을(를) 만들 수 있습니다. , citNo급여 이 정보를 저장합니다.

한 명 이상의 정보를 저장해야 하는 경우 어떻게 해야 합니까? 이제 각 정보에 대해 사람마다 다른 변수를 만들어야 합니다. name1 , citNo1 , 급여1 , 이름2 , citNo2 , 급여2

더 나은 접근 방식은 모든 관련 정보를 단일 이름 Person으로 수집하는 것입니다. 모든 사람을 위해 구조화하고 사용하십시오.

<시간>

구조체에 대한 추가 정보


C 언어

  1. C# Hello World - 첫 번째 C# 프로그램
  2. C# 키워드 및 식별자
  3. C# 변수 및 (기본) 데이터 형식
  4. C# 연산자
  5. C# 비트 및 비트 시프트 연산자
  6. C# 기본 입력 및 출력
  7. C# 식, 문 및 블록(예제 포함)
  8. C# 주석
  9. C# switch 문
  10. C# 삼항(? :) 연산자