반응형
SMALL

7.1.4 구조체 배열

동일한 구조를 갖는 구조체 변수가 여러 개 사용 될 때 그 구조체 변수들을 대표하는 배열명을 설정하여 일반 배열과 같이 사용

 

- 구조체 배열의 예

  > 3명의 개인 신상정보를 저장하기 위한 구조체 배열 선언

struct person{
         charname[8];
         int age;
         charsex;
}X[3];
struct person{
         charname[8];
         int age;
         charsex;
};
structpersonX[3];

- 구조체 배열의 기억공간 표현

struct person{

     char name[8];

     int age;

     char sex;

};

struct person X[3];

 

 

(1) 구조체 배열의 초기화

 

(2) 구조체 배열의 멤버 참조

strcpy(X[1].name, "홍길동");   >> 구조체배열 2번째 요수 name에 "홍길동"을 저장 

 X[2].sex = 'M';                   >> 구조체배열 3번째 요소 sex에 'M'을 저장

K = X[2].age;                      >> 구조체배열 3번째 요소인 age 멤버값을 변수 K에 저장

 

// 구조체 배열의 사용 

#include <stdio.h>
void main(){
   struct person{
      char *name;
      int age;
      char sex;  };    
struct person X[3] = {{"홍길동", 20, 'M' }, {"황진이", 22, 'F'}, {"임꺽정", 30, 'M'}};  // 구조체 배열의 초기화  


 int i, sum = 0; 
   for(i=0; i<3; i++){ 
      

      printf("이름 : %s 나이 :%d 성별 :%c \n", X[i].name, X[i].age, X[i].sex);

                                                                                                      // 구조체 배열의 멤버를 참조     
      sum = sum + X[i].age;       }

   printf("나이합 : %d", sum) ;          }

 

 

 

 

 

7.1.5 구조체 포인터

> 포인터를 사용하여 구조체를 다룰 수 있게 함

   - 구조체를 보다 쉽게 다룰 수 있다.

   - 구조체변수 선언시 * 를 붙여 포인터로 선언

   - 구조체 포인터는 포인터와 동일하게 주소값을 갖게 되며, 자료가 있는 곳을 가르킨다.

 

(1) 구조체 포인터 선언

- 형식 : struct 구조체명 *포인터변수명;

- 사용 예 : struct person *pt;

* 구조체 배열의 선언 예

struct person{ 

         charname[8];

         int age;

         charsex; };

struct person man;   >> 구조체 변수 man 선언

struct person*pt;      >> 구조체 포인터 변수 pt 선언

pt = &man;             >> 구조체 포인터 변수의 초기화

 

 

(2) 구조체 포인터의 멤버 참조

- 도트 연산자 ( . ) 를 이용
        (*pt).name

- 포인터 연산자 (->)를 이용
        pt -> name

 

// 구조체 포인터의 사용 예

#include <stdio.h> 
struct student{
   char name[10];
   int kor;
   int math;
};
void main(){
   struct student hs[4]= {{"KIM  HG",90,95},{"LEE SY",85,90},{"PARK GS",70,85},{"CHOI HJ",95,75}};
                                       //구조체 변수의 선언 및 초기화 
   struct student *p;  // 구조체 포인터 선언 
   p=hs; // 구조체 포인터 변수에 구조체의 시작 주소를 대입. p는 ha[0]를 가리키게 됨 

   printf("%s %d %d \n", p->name, p->kor, p->math); 
   p+=3; 
   printf("%s %d %d \n", p->name, p->kor, p->math); 
   p--; 
   printf("%s %d %d \n", p->name, p->kor, p->math);        }

 

반응형
LIST

+ Recent posts