Post

09. C-Programming(Structure)

09. C-Programming(Structure)

[toc]

C Programming 실습9

구조체 기본

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

struct Car{
  int num;
  double gas;
};
int main(void)
{
  struct Car car1;

  car1.num = 10;
  car1.gas = 20;

  printf("자동차 번호는 %d : 연료량은 %lf입니다.\n", car1.num, car1.gas);

  return 0;
}

함수와 구조체

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

typedef struct Car{
  int num;
  double gas;
};

// 매개변수에 구조체를 넘겨줄 수 있음
void show(struct Car c);

int main(void)
{
  struct Car car1 = {0, 0.0};

  printf("번호를 입력하세요.\n");
  scanf("%d", &car1.num);

  printf("연료량을 입력하세요.\n");
  scanf("%lf", &car1.gas);

  show(car1);

  return 0;
}

void show(struct Car c)
{
  printf("자동차 번호는 %d : 연료량은 %lf입니다.\n", c.num, c.gas);
}

포인터와 구조체

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

typedef struct Car{
  int num;
  double gas;
};

void show(struct Car *pC);

int main(void)
{
  struct Car car1 = {10, 20.5};

  car1.num = 30;
  car1.gas = 40.1;

  show(&car1);

  return 0;
}

// 포인터를 사용할 때 ->를 사용한다.
void show(struct Car *pC)
{
  // 중요
  printf("자동차 번호는 %d : 연료량은 %lf입니다.\n", pC->num, pC->gas);
}

배열과 구조체

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

// 배열과 구조체 같이 사용
typedef struct Car{
  int num;
  double gas;
};

int main(void)
{
  struct Car cars[3];

  // 중요
  cars[0].num = 1234; cars[0].gas = 25.5;
  cars[1].num = 4567; cars[1].gas = 52.2;
  cars[2].num = 7890; cars[2].gas = 20.5;


  for (int i = 0; i < 3; i++) {
    printf("자동차 번호는 %d : 연료량은 %lf입니다.\n", cars[i].num, cars[i].gas);
  }

  return 0;
}

구조체의 포인터

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

typedef struct Car{
  int num;
  double gas;
  struct Car *next;  // 구조체의 주소
};

int main(void)
{
  struct Car car0;
  struct Car car1;
  struct Car car2;
  struct Car *pcar;

  car0.num = 1234; car0.gas = 25.5;
  car1.num = 4567; car1.gas = 52.2;
  car2.num = 7890; car2.gas = 20.5;

  car0.next = &car1;
  car1.next = &car2;
  car2.next = NULL;


  for (pcar = &car0; pcar != NULL; pcar = pcar -> next) {
    printf("자동차 번호는 %d : 연료량은 %lf입니다.\n", pcar -> num, pcar ->  gas);
  }

  return 0;
}