본문 바로가기

프로그래밍/자료구조

자료구조 공부하기 구조체 구조체 사용하기

http://blog.naver.com/wlsgkr91/220901907173


1.구조체 사용하기

-변수를 하나씩 사용하면  한사람의 정보만 저장할 수 있다.

-여러명의 정보를 저장하려면 변수를 계속 추가해야된다.

-자료를 체계적으로 관리하기 위해 구조체를 제공한다.


struct Person{ 


char name[20]; 

int age; 

char address[100; 


}

-위와 같은 식으로 인적정보를 구조체로 표현한다.

-사람단위로 정보를 처리할 수 있다.

-구조체도 배열로 만들 수 있다.

-구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다.


struct 구조체이름{ 

자료형 멤버이름; 

};  //마지막 닫을때 ;을 붙인다.

struct 구조체 이름 변수이름;


struct Person { 

  char name[20]; 

  int age; 

  char address[100]; 

}; 

int main() 

   struct Person p1; 

   strcpy(p1.name,"홍길동"); 

   p1.age=30; 

   strcpy(p1.address,"인천광역시 부평구 청천동"); 

   printf("이름 : %s\n",p1.name); 

   printf("나이 : %d\n",p1.age); 

   printf("주소 : %s\n",p1.address); 

}

-구조체는 보통 메인함수 밖에 정의한다.

-함수 안에 사용하면 해당 함수 안에서만 사용가능하다.

-구조체 변수를 사용해야하고 반드시 struct를 붙여준다.


구조체를 줄여쓰기위해.

typedef를 사용한다.


typedef struct  { 

  char name[20]; 

  int age; 

  char address[100]; 

}Person;//구조체를 선언하는 동시에 변수선언. 

int main() 

   Person p1; 

   strcpy(p1.name,"홍길동"); 

   p1.age=30; 

   strcpy(p1.address,"인천광역시 부평구 청천동"); 

   printf("이름 : %s\n",p1.name); 

   printf("나이 : %d\n",p1.age); 

   printf("주소 : %s\n",p1.address); 

}


위와 같은 식으로 구조체 이름은 없애고 typydef사용과

구조체 변수를 사용하여 메인 함수 안에서 사용하는 코드를

간단하게 줄일 수 있다.


*구조체는 멤버 변수가 여러개 들어있어서 크기가 크다.

*구조체 변수끼리 할당하면 모든 멤버를 복사하게 됨

*구조체 변수를 일일이 선언해서 사용하는 것은 비효율적.


typedef struct { 

  char name[20]; 

  int age; 

  char address[100]; 

}Person; 

int main() 

   Person *p1 =malloc(sizeof(Person)); 

   //구조체 포인터 선언 구조체이름 앞에 무조건 struct붙인다. 

   strcpy(p1->name,"홍길동"); 

   p1->age=30; 

   //구조체 멤버의 포인터에 접근할때는 화살표를 사용 

   strcpy(p1->address,"인천광역시 부평구 청천동"); 

  printf("이름:%s\n",p1->name); 

  printf("나이:%d\n",p1->age); 

  printf("주소:%s\n",p1->address); 

  free(p1); 

  //할당한 메모리를 해제 해줘야된다. 

   return 0; 

}