[구조체 변수의 전달과 리턴]
[함수의 인자로 전달되는 구조체 변수]
- 구조체 변수의 인자 전달 방식은 기본 자료형 변수의 인자 전달 방식과 동일하다
- 구조체 변수의 연산은 대입연산 (=)만 가능하며, 이외의 사칙 연산은 적용 불가
- 리턴 역시 기본 자료형 변수의 리턴 방식과 동일하다 .
struct simple{
int data1;
int data2;
};
void show(struct simple ts); //call by value
void swap(struct simple* ts); //call by reference
int main(){
struct simple s={1,2};
show(s);
swap(&s);
show(s);
struct simple s2=s1;
show(s2);
return 0;
}
void show(struct simple ts)
{
printf("data 1: %d , data 2 :%d\n",ts.data1,ts.data2);
}
void swap(struct simple * ps)
{
int temp=ps->data1;
ps->data1=ps->data2;
ps->data2=temp;
}
[구조체의 유용함]
- 잘 구현된 프로그램은 처리되어야 할 데이터의 부류가 적절히 나누어 진다 .
- 부류를 적절히 나누면 데이터를 처리하는 과정이 수월해진다 .
[중첩된 구조체]
struct cirecle{
struct point p;
double radius;
}
struct point{
int x;
int y;
}
void main()
{
struct circle a;
a.p.x=3; //내부 구조체로의 접근
}
[typedef 키워드의 이해]
[typedef]
typedef int INT;
=>int 에게 INT란 이름을 부여하겠습니다 .
[구조체로의 적용]
//type 1
struct Data
{
int data1;
int data2;
}typedef struct Data DATA;
=> struct DATA a (가능)
=> DATA a (가능)
//type2
typedef struct Data
{
int data1;
int data2;
}DATA;
=>struct DATA a (불가)
=>DATA a (가능)
[공용체]
[공용체의 특성]
하나의 메모리 공간을 둘 이상의 변수가 공유하는 형태
가장 큰 것 기준으로 할당 , 각각의 요소들이 공유한다 .
union u_data
{
int d1;
double d2;
char d3
}
[열거형]
[열거형]
- 특정 정수값에 의미를 부여 할 수 있다
- 프로그램의 가독성을 높일 수 있다/
enum Color {RED=1 , GREEN = 3 , BLUE = 5};
'C' 카테고리의 다른 글
26장 . 전처리기에 의한 매크로 처리 (0) | 2023.01.10 |
---|---|
22장 . 구조체와 사용자 정의 자료형 1 (0) | 2023.01.10 |
19강.함수 포인터와 void포인터 (0) | 2023.01.08 |
18강 . 다차원 배열 그리고 포인터 (0) | 2023.01.08 |
16장 . 다차원 배열 (0) | 2023.01.08 |