[C] 구조체란 ?

김태희·2023년 11월 9일
0
post-thumbnail
post-custom-banner

데이터를 그룹화 하는 구조체

int age1, age2, age3, age4;
float height1, height2, height3, height4;

1. 배열로 나타내기

int age[4];
for(i=0; i<4; i++) scanf("%d", age+i);
이와같이 반복문을 사용하여 더 효율적으로 사용 가능함

배열의 한계 : 크기가 같은 데이터만 그룹으로 묶을 수 있음

2. 구조체(Structure)로 나타내기

구조체로 새로운 자료형을 만드는 방법

struct People{
  int age[4];
  float height[4];
}

구조체로 만든 자료형으로 변수 선언하기

struct People data;
struct People friend_list[64];
struct People *p;

이때 귀찮으니 사용하는것이 typedef 문법 !
typedef struct People Person;
Person data;


주로 사용되는 방법 : structtypedef를 조합해서 구조체 변수를 선언하기

typedef struct People{
  int age[4];
  float height[4];
}Person;


주의 ! 
struct People{
  int age[4];
  float height[4];
}Person;

typedef를 생략한것은 다른 의미로 사용 ! 
People이라는 자료형을 만들면서 Person 변수를 선언해주는 형식으로 사용됌

구조체로 선언한 변수의 요소 사용하기

구조체 변수 이름.사용할 요소

#include <stdio.h>

typedef struct People{
  int age[4];
  float height[4];
}Person;

void main(){
  Person data;
  data.age[0] = 21;
  data.height[0] = 186.1;
  printf("%d살이고 %.1fcm입니다", data.age[0], data.height[0]);
}

결과 : 21살이고 186.1cm입니다

구조체로 선언한 변수를 포인터로 사용하는법

Person data;
Person *p; /* Person형식으로 선언한 메모리에 접근할 수 있는 포인터를 선언 */
p = &data;
(*p).age = 23;

여기서 * 연산자의 우선순위가 . 연산자보다 낮음
*p.age 처럼 사용할 시 오류가 발생 괄호는 필수 !


괄호 이슈를 없애는 방법 : -> 연산자의 사용
(*p).age;
p->age; 
같은 의미로 사용가능하다 !


구조체 문법으로 선언한 변수의 초기화 방법
Person data = {21, 186.1};
구조체 내부에 선언한 변수의 순서와 초기값의 순서가 같아야한다는 점 유의 !
post-custom-banner

0개의 댓글