#04 typedef

View Comments

#04 typedef

 *typedef 는 타입 정의한다.
=>typedef (타입) (변경할이름)
     - typedef int INT
      INT a = 10; 과같이 사용가능

*예제가 갑
typedef stuct point {
     int x; 
     int y;
     struct point *p
}Point;

Point a = {1,3};
Point b = {100,200};
a.p = &b;
printf("%d %d",a.p->x,a.p->y);
or
printf("%d %d",(*a.p)->x,(*a.p)->y);
*구조체 기반 callby value, callby reference

typedef struct point{

int x;
iint y;
}Point;

void showpoint (Point pos){
     pos.x = 100;
     pos.y = 200;
     printf("%d %d\n",pos.x,pos.y);//결과가 100,200
};
//main

point a = {1,2};
point b = {100,200};
showpoint(a);
printf("%d %d",a.x,a.y);//결과가 1,2

- callbyValue로  pos에 a 의복사가 일어난다. 복사된 데이터기때문에 실제 값이 바뀌지 않는다.

typedef struct point {

int x;
int y;

};

void showposRef (Point *pos){

     (*pos).x=100;
     pos->y = 200;
     printf("%d %d",pos->x,pos->y); //100,200나옴

};

//main

Point a= {10,20};

showposRef(&a);

printf("%d %d",a.x,a.y); // 100,200 나옴 바뀜 

- callbyRef임으로 실제 주소값이 넘어감으록 값이 바뀐다.


*구조체 복사
Point a= {1,2};
Point b; 
b=a;
b에 a 가 복사된다.

*union 과 struct

typedef struct sbox{
int x;
double z;
int y;
}Point;
typedef union ubox{
int x;
int x;
double z;

}UBOX;

//main
SBOX s;
UBOX u;
printf("%p %p %p ",&s.x,&s.y,&s.z);
//주소가 4 4 8 단위씩 뛴다.
printf("%p %p %p ",&u.x,&u.y,&u.z);
//주소가 8사이즈로 멈춰있다. 가장크게 잡혀있음.
printf("%d %d",sizeof(SBOX),sizeof(UBO);
//sbox는 4+4(패딩)+8+4+4(패딩) 24바이트
//Ubox는 가장큰 double 8바이트


*유니온의 활용

typedef struct dbs{
   
unsigned int a;
   
unsigned int b;
}DBS;

typedef struct uboxs{
   
int insertNum;
   
DBS *p ;
}UBOXs;
//main   
   
UBOXs ubox;
   
scanf("%d",&(ubox.insertNum));
    pritntf("upper %d %d",ubox.p->a,ubox.p->b);


*enum


enum{
do,re,me};

//main
do =0 re =1 me = 2

enum{
do=3,
re,
me = 5
} ;
//main 3,4,5  re는 앞의 상수에 +1

typdef enum doreme{
doo,re,mee
}DOREME;


'C Language > C basis' 카테고리의 다른 글

#03 구조체와 포인터  (0) 2016.04.27
#02파일분할과 헤더파일  (0) 2016.04.27
#01 선행처리기  (0) 2016.04.27

0 Comments (+add yours?)

Leave a Reply

Tracbacks (+view to the desc.)