학습목표
1. 구조체를 이용한 매개변수사이의 자료전달 방법을 이해할 수 있다.
2. typedef를 이용하여 새로운 자료형을 정의할 수 있다.
3. 구조체 비트필드를 선언하고 사용할 수 있다.
4. 공용체를 사용할 수 있다.
주요용어
typedef : 이미 존재하는 자료형에 새로운 이름을 부여하기 위한 키워드
구조체 비트필드 : 주기억장치의 기억공간을 byte 단위가 아닌 bit 단위로 사용하는 방법
공용체 : 동일한 기억장소에 여러 유형의 자료를 저장하기 위해 정의하는 자료형
7.1.6. 함수와 구조체
(1) 구조체를 함수의 매개변수로 사용
- 일반변수를 함수의 매개변수로 사용하는 것과 동일
- 매개변수가 구조체인 경우 함수의 형식매개변수를 구조체로 선언
- 해당 구조체 전체가 복사되기 때문에 편리
- 구조체 전체가 복사되기 때문에 시간이 많이 걸리고, 기억공간의 낭비가 심하다.
// 구조체를 함수의 매개변수로 사용 예
#include <stdio.h>
struct num calc(struct num);
struct num{
int x;
int y;
int sum;
int mul; };
void main(){
struct num number1; //구조체 변수 선언
number1.x = 10;
number1.y = 20;
number1 = calc(number1);
//피호출함수 calc()에 struct num형 구조체를 매개변수로 넘겨줌
printf("x:%d, y:%d, sum:%d mul:%d \n", number1.x, number1.y, number1.sum, number1.mul); }
struct num calc(struct num number2){
number2.sum = number2.x +number2.y;
//넘겨받은 struct num형 구조체의 멤버끼리 계산
number2..mul = number2.x * number2.y;
return(number2); } // 구조체를 리턴
- 함수의 원형 정의에 대한 설명 #include <stdio.h> struct num calc(struct num number2); ---> 함수의 원형 정의 struct num{ ............................ |
struct calc(struct num number2); ↓ ↓ int 나 char와 같은 일종의 자료형 int calc(int number2); 와 같은 개념 따라서 struct num calc (struct num number2); 는 반환 자료형이 struct num형인 구조체이고 struct num 형의 구조체를 매개변수로 갖는 함수 calc |
(2) 구조체 포인터를 함수의 매개변수로 사용
- 일반적으로 구조체 포인터를 함수의 매개변수로 사용
- 구조체를 복사하기 않기 때문에 실행속도가 향상되고, 기억공간의 사용효율도 좋다.
// 구조체 포인터를 함수의 매개변수로 사용
7.1.7 typedef
>> 이미 존재하는 자료형에 새로운 이름을 붙이기 위한 키워드
- 간단하거나 의미있ㄴ느 이름으로 바꿀 수 있어 프로그램 이해가 쉽다.
- 구조체 형을 선언하는데 많이 사용
* 형식 : typedef 기존 자료형 새로운 자료형이름;
* 사용 예 ; typedef int INT;
- typedef 의 사용 typedef unsigned int BYTE; ----> unsigned int 형을 BYTE 라는 새로운 이름으로 정의 BYTE val; ----> 컴파일러가 unsigned int val 로 해석 |
typedef int * PTR; -----> int * 를 PTR로 재정의 PTR p1, p2; -----> int *p1, *p2 를 의미 |
// typedef 의 사용 예1
#include<stdio.h>
struct data{
int x;
int y; };
typedef struct data DATA; // data형 구조체를 새로운 이름 DATA로 정의
voidmain(){
DATAd = {1,2}; // struct data d; 와 동일
printf("d.x=%d,d.y=%d\n",d.x,d.y); } // 결과 : d.x = 1 , d.y =2
- typedef 을 이용한 구조체 표현의 다른 방법
structdata{ int x; int y; }; typedef struct data DATA; |
typedef structdata{ int x; int y; } DATA; << 구조체 정의와 typedef 선언을 한꺼번에 표현 |
'방송통신대학 > C 프로그래밍' 카테고리의 다른 글
공용체 union (0) | 2020.06.15 |
---|---|
구조체struct 의 비트필드 bit field (0) | 2020.06.14 |
구조체 배열struct array (0) | 2020.06.12 |
구조체 struct (0) | 2020.06.11 |
포인터와 배열 pointer array (0) | 2020.06.10 |