easy software

C언어 구조체 정의 / 변수선언 / 변수의 접근 방법 본문

C언어/구조체

C언어 구조체 정의 / 변수선언 / 변수의 접근 방법

JAVA 웹개발자 2015. 2. 5. 13:40

구조체란?

 

 

예를들어, 회사의 직원 관리 프로그램을 개발해야 한다고 가정해 봅시다.

 

아주 간단하게 하면 이름, 주민등록번호, 연봉을 저장해야 하는 프로그램이 필요하겠죠?

 

구조체를 알지 못한다면 char형 배열과 int형 변수로 위의 데이터를 저장할 것입니다.

 

그런데, 매번 이렇게 따로 변수를 선언해야 되는것은 여간 귀찮은게 아니죠?

 

이름, 주민번호, 연봉을 항상 붙여서 사용하면 훨씬 더 간단할 텐데요.

 

그래서 구조체를 사용합니다.

 

사실, C언어로 작성된 프로그램(간단한 예제를 제외한)에서

 

코드에 구조체가 없다면, 그는 잘못된 프로그램이라고 봐도 무관합니다. 그정도로 중요해요.

 

 

 

구조체의 정의

 

 

struct emp{

char name[10];

char pnumber[10];

int pay;

};

 

위의 코드처럼 struct라는 키워드를 사용하여, main함수 밖에서 구조체를 정의합니다.

 

중괄호 끝에는 ; 잊지마세요.

 

그럼 emp라는 구조체가 선언됩니다.

 

emp는 int, double과 마찬가지로 자료형입니다.

 

  

 

 

emp는 위와 같이 정의되어 있는 것입니다.

 

즉, 세개의 변수는 emp라는 자료형을 통해 하나로 묶여 다니게 되는거죠.

 

 

 

구조체 변수의 선언

 

 

선언방법은 간단합니다. e1, e2, e3을 선언해보죠.

 

1.

struct emp{

char name[10];

char pnumber[10];

int pay;

};

 

int main(void){

struct emp e1, e2, e3;

 

 

2.

struct emp{

char name[10];

char pnumber[10];

int pay;

}e1, e2, e3;

 

솔직히 1의 방법을 더 많이 사용하며, 실제로도 권장합니다.

 

 

 

구조체 변수로의 접근

 

 

. 연산자를 사용하여 접근합니다.

 

int main(void){

struct emp e1;

 

e1.pay = 500;

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

 

return 0;

}

 

e1의 멤버인 pay에 500이 저장되고, name에는 홍길동이 저장될 것입니다.

 

 

 

그럼 간단한 프로그램을 하나보도록 하죠.

 

이름, 주민번호, 연봉을 저장할 수 있는 구조체를 선언합니다.

 

그리고 값을 사용자로부터 입력받아 초기화합니다. 그 후 저장된 데이터를 출력합니다.

 

 

#include <stdio.h>

 

//이름, 주민번호, 연봉을 멤버로 가진 구조체 선언
struct employee{
     char name[10];
     char pnumber[20];
     int pay;
};

 

int main(void){
     struct employee e1; //구조체 변수를 선언

 

     fputs("이름, 주민등록번호, 연봉을 입력하세요 \n", stdout);
     scanf("%s %s %d", e1.name, e1.pnumber, &e1.pay);

 

     fputs("\n구조체변수 e1에 저장된 데이터 출력 \n\n", stdout);
     printf("%s %s %d \n\n", e1.name, e1.pnumber, e1.pay);

 

     return 0;
}

 

scanf함수를 통해 사용자로부터 값을 입력받아 구조체의 멤버로 전달합니다.

 

이후 구조체의 멤버에 저장된 데이터를 출력합니다.

 

아주 간단하죠?

Comments