• 검색 결과가 없습니다.

제 9 장 구조체와 공용체제 9 장 구조체와 공용체

N/A
N/A
Protected

Academic year: 2021

Share "제 9 장 구조체와 공용체제 9 장 구조체와 공용체"

Copied!
17
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제 9 장 구조체와 공용체

(2)

목 차

 구조체의 정의와 선언

 typedef 와 구조체

 공용체

 구조체와 비트처리

(3)

구조체의 정의와 선언 (1)

 하나의 이름으로 여러형의 변수를 집합화

 일종의 레코드

 구조체의 선언

struct      식별자로서 구조체명  {         멤버  1 의 선언문 ;         멤버  2 의 선언문 ;         멤버  3 의 선언문 ;        ... 

       멤버  n 의 선언문 ;          };

(4)

구조체의 정의와 선언 (2)

 구조체 선언 예와 메모리 구조

struct list { 

       char initial ;         char sex ;         int age ;         };

(5)

구조체의 정의와 선언 (3)

 구조체의 정의

이미 선언된 구조체에 값을 할당하기 위한 것

일종의 변수를 선언하는 것

2 가지의 방법이 있음

구조체 선언과 구조체 변수 선언을 동시 수행

struct list {        char sex; 

      int age; 

    } a, b, c;

구조체를 선언하고 별도로 정의

 struct list a, b, c;

(6)

구조체의 정의와 선언 (4)

 구조체 변수의 초기화

1 차원 배열을 초기화하는 방법과 유사

각각의 초기값이 대응 구조체 멤버 자료형과 일치

배열형 멤버의 배열 크기는 절대 생략 불가

구조체 배열 자체의 배열 크기는 생략이 가능

초기화가 이루어지지 않는 경우 0 으로 초기화

struct list  a = {'C', 'M', 36};

(7)

구조체의 정의와 선언 (5)

 멤버 변수 접근

정적 변수일 경우 접근연산자 ‘ .’ 기호 사용

struct list main_list; 

main_list.sex='F';

또 다른 방법으로 '->' 기호를 사용

정의 변수를 포인터를 이용하여 정의했을 경우

struct list *p_a; 

p_a->sex='F';

(8)

구조체의 정의와 선언 (6)

구조체 배열과 포인터

구조체 배열

형식

struct  태그명  {         멤버  선언문        }  배열  ; 

   또는 

      struct  태그명 배열 ;

    sturct list { 

        char name [10]; 

        char sex; 

        int  age; 

    } man [60]; 

   또는 

    struct list man[60] ;

(9)

구조체의 정의와 선언 (7)

 구조체 배열과 포인터 ( 계속 )

구조체 배열 ( 계속 )

초기화

형식

struct tag_name   배열   = { { … },         { … }, 

       { … }, … } ;

 struct list man []={ { ‘C', ‘M', 36 },         { 'K', 'F', 33 }         { 'H', 'F',  8 } } ;

(10)

구조체의 정의와 선언 (8)

 구조체 배열과 포인터 ( 계속 )

구조체 배열 ( 계속 )

구조체 배열의 메모리 할당 ( 예제 9-4)

(11)

구조체의 정의와 선언 (9)

 구조체 배열과 포인터 ( 계속 )

구조체 포인터

원소가 구조체로 된 배열과 포인터에서 배열명은 0 번째 인 원소의 주소

형식

struct  태그명  * 선언자  ;

struct man[]; 

struct man *ptr; 

ptr=man;

man[] 의 0 번지째 원소의 번지를 포인터 ptr 에 지정

(12)

구조체의 정의와 선언 (10)

 구조체 배열과 포인터 ( 계속 )

구조체 포인터 ( 계속 )

접근 연산자

“.” 사용 (ptr).age

“->” 사용

ptr->age

(13)

구조체의 정의와 선언 (11)

 구조체의 중첩

구조체 안에 또 다른 구조체를 선언

struct subject { int C;

int OS;

int DS;

};

struct student { char name[10];

long int st_no;

struct subject score;

};

(14)

typedef 와 구조체 (1)

 typedef 선언

자료형 이름을 사용자가 임의 설정 할 때 사용

#define 명령어 이용 가능

typedef vs #define

typedef 는 심볼 명칭의 값으로 자료 type 만을 취함

typedef 의 기능은 C 컴파일러에 의해서 처리

typedef 는 #define 보다 다양한 형태의 치환이 가능

형식

typedef  자료형 변경할 형 ;

typedef double DWORD;

(15)

typedef 와 구조체 (2)

 typedef 를 이용한 구조체 선언

typedef 다음에 구조체임을 struct 기술

형식

typedef  구조체명 새로운 구조체형 

typedef struct list man; 

man person;

(16)

공용체

 구조체와 비슷한 형식

 선언문자 union 사용

 가장 큰 멤버의 메모리를 할당 후 공용

union list { char a, int b, float c} man; 

메모리 할당 구조

(17)

구조체와 비트 처리

비트 단위 자료 처리하는 비트 필드 (bit field) 기능 이용

ON 이나 OFF 의 값

메모리의 낭비

형식

struct  구조체명 { 

          멤버 1 :  비트길이 ;         ... 

        멤버 n :  비트길이 ; }

참조

관련 문서

※평면기점(Op) ~Mohr원에서 임의면에 작용하는 응력의 크기와 방향을 정하기 위한 기점 선정방법: Mohr원 상에서 응력의 크기와 방향을 알고 있는

• 평균치와 표준편차가 각각 다른 정규분포를 일반화하여 새로운 하나의 정 규분포를 얻기 위해서는 관측치( ) 값을 변형하여 평균과 표준편차를 통 일시킨다... 부표에서 세로의

• 구매단계에서는 행동을 촉진할 수 있는, 구매후 평가단계에서는 인지부조화를 줄이는데 초점을 두어야 함. ♣ 소비자 반응의

① 근로자의 희망을 고려한 배치 및 이동으로

해상화물운송장에 유통성을 부여하지 않는 이유는 선적 후 당일 또는 수일 내에 목적지에 도착하기 때문에 운송장을 유통시킬 시간이 없기

범인체포는 공안기관 의 체포증에 의하며 , 피의자에 대한구속은 인민검찰원의 승인 또는 인민법원의 결정을 거친 후에 공안기관이 집행한다.. 형사처벌을 받은 적이

관련다각화(Related Diversification): 본업과 관련된 산업으로 사업을 전개하는 것 비관련다각화(Unrelated Diversification): 전혀 상관이 없는 산업으로 진출하는 것.. ▷

Rasmussen, The use of soil-gas CO 2 in the exploration for sulfide-bearing breccia pipes in northern Arizona, 1990, Journal of Geochemical Exploration, vol.38, pp..