C ÇÁ·Î±×·¥À» ÀÚ¹Ù·Î ¹ø¿ª ¹æ¹ý (typedef, #define,Æ÷ÀÎÅÍ, ¹è¿­)


[ Follow Ups ] [ Post Followup ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]

Posted by ±è´öÅ on August 11, 1997 at 15:47:38:


´ÙÀ½°ú °°Àº ¹æ¹ýÀ» »ç¿ëÇϽʽÿÀ.


1. C¾ð¾îÀÇ typedef´Â ÀÚ¹Ù¿¡¼­´Â Ŭ·¡½º¿Í ÀÎÅÍÆäÀ̽º¸¦
»ç¿ëÇÏ¿© ¹ø¿ªÇÑ´Ù.
2. »ó¼ö¸¦ Á¤ÀÇÇÏ´Â \#define ¹®Àº public final staticÀ» »ç¿ëÇÏ¿© ¹ø¿ªÇÑ´Ù.
3. ´ÙÀ½ ¹ø¿ª ¿¹Ã³·³ ¹ø¿ªÇÏ¸é º°´Ù¸¥ °í¹Î¾øÀÌ °ÅÀÇ ±â°èÀûÀ¸·Î ¹ø¿ªÇÒ ¼ö
ÀÖÀ¸³ª, º¸´Ù ÀûÀýÇÑ ¹ø¿ªÀ» À§Çؼ­´Â C¾ð¾îÀÇ °¢ º¯¼ö¿Í ÀÚ·áÇüÀÇ
ÀÇ¹Ì ¹× ¿ëµµµîÀ» Á¶»çÇÏ¿© Àüü ÇÁ·Î±×·¥ ±¸Á¶ ÀÚü¸¦ ÀÚ¹ÙÀÇ
°´Ã¼ ÁöÇâ °³³ä ¹× ÀÚ·áÇü °³³ä¿¡ ¸Â°Ô »õ·Î ÀÛ¼ºÇÑ´Ù.



±âŸ C, C++ ÇÁ·Î±×·¥À» ÀÚ¹Ù·Î ¹ø¿ªÇϱ⠾î·Á¿ì½Ç ¶§ ¿¹Á¦ ÇÁ·Î±×·¥À»
¿Ã¸®½Å´Ù¸é, ´ÙÀ½ Á¶°ÇÀ» ¸ðµÎ ¸¸Á·ÇÒ ¶§ ¹ø¿ªÇص帮°Ú½À´Ï´Ù.


1. ¿¹Á¦ ÇÁ·Î±×·¥ÀÌ °£°áÇϸ鼭 ÇÙ½ÉÀ» ³ªÅ¸³½´Ù.
2. ¿¹Á¦ ÇÁ·Î±×·¥ÀÌ ÇöÀçÀÇ ÀÚ¹Ù ¾ð¾î ¹× Ç¥ÁØ ÆÐÅ°Áö¸¦ »ç¿ëÇÏ¿©
¹ø¿ªÀÌ °¡´ÉÇÏ´Ù.
3. ¹ø¿ªÇÒ ½Ã°£Àû ¿©À¯°¡ ÀÖ´Ù.


-------------------- typedef_test.c --------------------------
#include


typedef int T;
typedef T *PT;
typedef PT *PPT;


#define SIZE 10
typedef unsigned char A[SIZE];
typedef A *PA;


main()
{
T t1, t2;
PT pt = &t1;
PPT ppt = &pt;
A a;
PA pa = &a;


t1 = 1;
t2 = 2;
printf("t1 = %d, t2 = %d, *pt = %d, **ppt = %d\n",
t1, t2, *pt, **ppt);
pt = &t2;
printf("t1 = %d, t2 = %d, *pt = %d, **ppt = %d\n",
t1, t2, *pt, **ppt);

a[0] = 'a';
printf("a[0] = %c, (*pa)[0] = %c\n",
a[0], (*pa)[0]);
}


Ãâ·Â °á°ú:
t1 = 1, t2 = 2, *pt = 1, **ppt = 1
t1 = 1, t2 = 2, *pt = 2, **ppt = 2
a[0] = a, (*pa)[0] = a



------------------------- TypeDefTest.java --------------------------
class T
{ public int v;


public T()
{ }


public T(int val)
{ v = val;
}
}


class PT
{
public T v;


public PT()
{ }


public PT(T val)
{ v = val;
}
}


class PPT
{
public PT v;


public PPT()
{ }


public PPT(PT val)
{ v = val;
}
}


class A
{
public static final int SIZE = 10;


// CÀÇ unsigned char°¡ charº¸´Ù´Â byteÀÇ Àǹ̷Πº¸´Ù ¸¹ÀÌ »ç¿ëµÈ´Ù¸é,
// ´ÙÀ½¿¡¼­ byte[]·Î ¼±¾ðÇÏ´Â °ÍÀÌ ´õ ÀûÀýÇÏ´Ù.
public char[] v = new char[SIZE];
}


class PA
{
public A v;


public PA()
{
}


public PA(A val)
{ v = val;
}
}


class TypeDefTest
{
public static final int SIZE = 10;
public static void main(String[] args)
{
T t1 = new T(), t2 = new T();
PT pt = new PT(t1);
PPT ppt = new PPT(pt);
A a = new A();
PA pa = new PA(a);


t1.v = 1;
t2.v = 2;
System.out.println("t1.v = " + t1.v + ", t2.v = " + t2.v +
", pt.v.v = " + pt.v.v +
", ppt.v.v.v = " + ppt.v.v.v );
pt.v = t2;
System.out.println("t1.v = " + t1.v + ", t2.v = " + t2.v +
", pt.v.v = " + pt.v.v +
", ppt.v.v.v = " + ppt.v.v.v );

a.v[0] = 'a';
System.out.println("a.v[0] = " + a.v[0] +
", pa.v.v[0] = " + pa.v.v[0] );
}
}


Ãâ·Â °á°ú:


t1.v = 1, t2.v = 2, pt.v.v = 1, ppt.v.v.v = 1
t1.v = 1, t2.v = 2, pt.v.v = 2, ppt.v.v.v = 2
a.v[0] = a, pa.v.v[0] = a


--
Deogtae Kim (±è´öÅÂ)
CA Lab. CS Dept. KAIST



Follow Ups:



À̾ ±Û¿Ã¸®±â(´äÇϱâ)

À̸§:
E-Mail:
Á¦¸ñ:
³»¿ë:
°ü·Ã URL(¼±ÅÃ):
URL Á¦¸ñ(¼±ÅÃ):
°ü·Ã À̹ÌÁö URL:


[ Follow Ups ] [ Post Followup ] [ ÀÚ¹Ù ¹¯°í ´äÇϱâ ]