은근한

C언어 10. 구조체 배열 및 구조체 포인터 본문

카테고리 없음

C언어 10. 구조체 배열 및 구조체 포인터

EsJoo 2013. 11. 5. 19:00

구조체 배열


구조체로도 배열을 선언할 수 있다. 일반 배열을 만들때 처럼 배열 이름 다음에 [] 안에 배열의 크기를 지정 하면된다.


ex)


struct student arr[3];    // student 구조체 3개 짜리 배열


구조체 배열도 일반 배열처럼 인덱스를 이용해서 배열의 원소에 접근할 수 있다.


ex)


arr[i].kor;        // 구조체 배열의 원소가 가진 멤버에 접근 물론 접근 연산자인 .(마침표)를 사용

arr[i].eng;

arr[i].math;



구조체 포인터


구조체 포인터는 구조체 변수를 가리키는 포인터 이다. 구조체 포인터에는 구조체 변수의 주소를 구해서 저장 할 수 있다.


구조체 포인터에는 구조체 변수의 주소를 구해서 저장할 수 있다.


구조체 포인터도 구조체 변수의 멤버에 접근할 때는 간접멤버접근 연산자인 -> 연산자를 사용한다.


ex) 구조체 포인터의 사용 예


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
 
struct student{
        char name[20];
        int kor,eng,math;
        float avg;   
    };
    
    void main()
    {
        struct student s = {"taylor",20,100,90,0.0};
        struct student *p = &s;   // 구조체 포인터의 선언 주소연산자인 &를 사용하여 포인터
        
        p->avg = (float)(p->kor + p->eng + p->math)/3;
        
        printf("이름 : %s\n",p->name);   // 연산자를 이용한 구조체의 멤버 접근
        printf("평균 : %4.3f\n",p->avg);
        
        }