1. Æ÷ÀÎÅÍ(Æ÷ÀÎÅÍ º¯¼ö)ÀÇ °³³ä

(1) ÀÏ¹Ý º¯¼ö¿Í Æ÷ÀÎÅÍ º¯¼öÀÇ Â÷ÀÌÁ¡

   ÀÏ¹Ý º¯¼ö´Â Á¤¼ö/½Ç¼ö/¹®ÀÚ Áß 1°³ÀÇ °ªÀ» ÀúÀåÇÑ´Ù.
   Æ÷ÀÎÅÍ º¯¼ö´Â °ªÀÌ ¾Æ´Ï¶ó "ÁÖ¼Ò"(º¯¼ö, ¹è¿­ µî ÀúÀå°ø°£ÀÌ ÇÒ´çµÈ °Í)¸¦ ÀúÀåÇÑ´Ù.

	int i=100, data[100]={ 1, 3, 5, 7, 9 };
	int *p, *q;

	p = &i;		// º¯¼ö iÀÇ ÁÖ¼Ò
	q = data;	// ¹è¿­ dataÀÇ ÁÖ¼Ò

	*p = 200;	// i = 200; °ú µ¿ÀÏ
	*(q+1) = 30;	// data[1] = 30; °ú µ¿ÀÏ

(2) Æ÷ÀÎÅÍ º¯¼ö¸¦ ÀÌ¿ëÇÏ¿© °ªÀ» »ç¿ë/º¯°æ

    Æ÷ÀÎÅ͸¦ ÀÌ¿ëÇÏ¿© °ªÀ» »ç¿ëÇϰųª, º¯°æÇÒ ¼ö ÀÖ´Â ¹üÀ§´Â
    Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ÁÖ¼Ò¿¡ µû¶ó °áÁ¤µÈ´Ù.

    Áï, À§ ¿¹¿¡¼­ Æ÷ÀÎÅÍ p´Â i¸¦ °¡¸®Å°¹Ç·Î 1°³ÀÇ °ª¸¸ »ç¿ë/º¯°æÇÒ ¼ö ÀÖ´Ù.
    ±×·¯³ª q´Â ¹è¿­ data¸¦ °¡¸®Å°¹Ç·Î 100°³ÀÇ °ªÀ» »ç¿ë/º¯°æÇÒ ¼ö ÀÖ´Ù.

(3) Æ÷ÀÎÅÍ º¯¼ö°¡ ¹è¿­À» °¡¸®Å³ ¶§ --- Æ÷ÀÎÅÍ º¯¼öÀÇ Áõ°¨ ¿¬»ê

    - Æ÷ÀÎÅÍ ¿¬»êÀÚ '*' ´ë½Å¿¡ ¹è¿­ÀÇ À妽º »ç¿ë
	Áï, *(q+3) Àº q[3] °ú µ¿ÀÏÇϸç, ¹è¿­°ú µ¿ÀÏÇÑ ÇüÅ·Π»ç¿ëÇÒ ¼ö ÀÖ´Ù.

    - Æ÷ÀÎÅÍ º¯¼ö°¡ °¡¸®Å°´Â ¹è¿­ÀÇ À§Ä¡ À̵¿
	¾Æ·¡¿Í °°ÀÌ Æ÷ÀÎÅÍ º¯¼ö°¡ °¡¸®Å°´Â À§Ä¡¸¦ º¯°æÇÒ ¼ö ÀÖ´Ù.
	´Ü, Æ÷ÀÎÅÍ°¡ °¡¸®Å°´Â ¹è¿­ data[100]ÀÇ À妽º ¹üÀ§¸¦ ¹þ¾î³¯ ¼ö ¾ø´Ù.

		q = q + 2;
		q++;
		q--;


2. Æ÷ÀÎÅÍ ¹è¿­

   ¿©·¯ °³ÀÇ º¯¼ö(¿¹: 100°³ÀÇ º¯¼ö)¸¦ ¼±¾ðÇÏ´Â ´ë½Å¿¡ ¹è¿­À» ¼±¾ðÇÏ´Â °Í°ú °°´Ù.
   Áï, Æ÷ÀÎÅÍ ¹è¿­Àº Æ÷ÀÎÅÍ º¯¼ö¸¦ ¿©·¯ °³ ¼±¾ðÇÏ´Â ´ë½Å¿¡ Æ÷ÀÎÅÍ ¹è¿­À» »ç¿ëÇÑ´Ù.

	int *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10;

   ¿Í °°ÀÌ 10°³ÀÇ Æ÷ÀÎÅÍ º¯¼ö¸¦ ¼±¾ðÇϱ⠺¸´Ù´Â

	int *p[10];

   ·Î ¼±¾ðÇÏ¿© p1, p2, ..., p10 ´ë½Å¿¡ p[0], p[1], ..., p[9] ¸¦ »ç¿ëÇÑ´Ù.


3. ´ÙÁß Æ÷ÀÎÅÍ

    1Â÷¿ø Æ÷ÀÎÅÍ´Â °ª(Á¤¼ö/½Ç¼ö/¹®ÀÚ)ÀÌ ÀúÀåµÈ º¯¼ö(¶Ç´Â ¹è¿­)ÀÇ ÁÖ¼Ò.
    2Â÷¿ø Æ÷ÀÎÅÍ´Â 1Â÷¿ø Æ÷ÀÎÅÍ º¯¼öÀÇ ÁÖ¼Ò.
    3Â÷¿ø Æ÷ÀÎÅÍ´Â 2Â÷¿ø Æ÷ÀÎÅÍ º¯¼öÀÇ ÁÖ¼Ò.
    nÂ÷¿ø Æ÷ÀÎÅÍ´Â n-1Â÷¿ø Æ÷ÀÎÅÍ º¯¼öÀÇ ÁÖ¼Ò.

	int i=100, data[100]={ 1, 3, 5, 7, 9 };
	int *p, *q[10];		// 1Â÷¿ø Æ÷ÀÎÅÍ
	int **dp1, **dp2;	// 2Â÷¿ø Æ÷ÀÎÅÍ
	int ***tp1, ***tp2;	// 3Â÷¿ø Æ÷ÀÎÅÍ

	p = &i;
	dp1 = &p;		// p´Â Æ÷ÀÎÅÍ º¯¼ö
	tp1 = &dp1;

	q[2] = data;
	dp2 = q;		// q´Â Æ÷ÀÎÅÍ ¹è¿­
	tp2 = &dp2;

   À§ ¿¹¿¡¼­

	i, *p, **dp1, ***tp1

   Àº ¸ðµÎ µ¿ÀÏÇÏ´Ù. ¸¶Âù°¡Áö·Î data[0], *q[2], **dp2, ***tp2 µµ µ¿ÀÏÇÏ´Ù.


4. Æ÷ÀÎÅÍ¿Í ¹®ÀÚ ¹è¿­, ½ºÆ®¸µ »ó¼öÀÇ °ü°è

ÁÖÀÇ 1. ¸ðµç ¹è¿­ÀÇ À̸§Àº ¹è¿­¿¡ ÇÒ´çµÈ °ø°£ÀÇ Ã¹¹ø° "ÁÖ¼Ò"ÀÌ´Ù.

ÁÖÀÇ 2. ½ºÆ®¸µ »ó¼ö "ABC"´Â ±× ÀÚü°¡ "ÁÖ¼Ò"À̸ç, °ªÀ» º¯°æÇÒ ¼ö ¾ø´Ù.
	('A', 'B', 'C', '\0' ¼ø¼­ÀÇ 4¹®ÀÚ°¡ ÀúÀåµÈ "ÁÖ¼Ò"¸¦ ÁöĪÇÑ´Ù.
	 ÀÌ ¹®ÀÚµéÀº static area¿¡ ÀÚµ¿À¸·Î ÀúÀåµÈ´Ù.)

	´Ü, ¹®Àڹ迭ÀÇ ÃʱâÈ­(¿¹: char a[] = "ABC";)¿¡ »ç¿ëµÈ "ABC"´Â
	¹®Àڹ迭ÀÇ ÃʱâÈ­¸¦ Æí¸®ÇÏ°Ô Çϱâ À§ÇÑ °ÍÀÏ »ÓÀ̸ç, ½ºÆ®¸µ »ó¼ö°¡ ¾Æ´Ï´Ù.

<¿¹1>
	char *p;
	char a[] = { 'A', 'B', 'C', '\0' };	// char a[] = "ABC"; ¿Í µ¿ÀÏÇÔ!

	p = a;
	*p = 'X';
	*(p+1) = 'Y';
	*(p+2) = 'Z';

<¿¹2>
	char *p = "ABC";	// p´Â ½ºÆ®¸µ »ó¼ö "ABC"¸¦ °¡¸®Å´
	char b[100];

	strcpy(b, p);
	b[3] = *(p+1);
	b[4] = 'B';
	b[5] = '\0';

   Æ÷ÀÎÅÍ p´Â "½ºÆ®¸µ »ó¼ö"¸¦ °¡¸®Å°°í ÀÖÀ¸¹Ç·Î °¢ ¹®ÀÚ¸¦ »ç¿ëÇÒ ¼ö ÀÖÀ¸³ª,

	*p = 'X';
	strcpy(p, "XYZ");

   ¿Í °°ÀÌ °ªÀ» º¯°æÇÏ´Â °ÍÀº Çã¿ëµÇÁö ¾Ê´Â´Ù. ±×·¯³ª ¸ðµç Æ÷ÀÎÅÍ´Â ´Ù¸¥ ÁÖ¼Ò¸¦
   °¡¸®Å°°Ô ÇÒ ¼ö ÀÖÀ¸¹Ç·Î

	p = "XYZ";
	p = b;

   ¿Í °°Àº ¹®ÀåÀº ´ç¿¬È÷ Çã¿ëµÈ´Ù.(Æ÷ÀÎÅÍÀÇ Á¤È®ÇÑ À̸§Àº "Æ÷ÀÎÅÍ º¯¼ö"À̸ç,
   Æ÷ÀÎÅÍ º¯¼ö°¡ ´Ù¸¥ ÁÖ¼Ò¸¦ °¡¸®Å°°Ô ÇÒ ¼ö ÀÖ´Ù.)


<¿¹3> char *p = "ABC"; ´Â

	char *p;
	p = "ABC"

   ¿Í °°´Ù. ±×·¯³ª char a[] = "ABC"; ¸¦

	char a[4];
	a = "ABC"

   ¿Í °°ÀÌ ¾µ ¼ö´Â ¾ø´Ù.(¹è¿­À̸§Àº °íÁ¤µÈ ÁÖ¼Ò°ªÀ̸ç, Æ÷ÀÎÅÍ º¯¼ö°¡ ¾Æ´Ï´Ù.)


5. "±¸Á¶Ã¼ º¯¼ö"¿Í "±¸Á¶Ã¼ Æ÷ÀÎÅÍ"¿¡¼­ Ç׸ñ ¼±Åà ¹æ¹ý

(1) ¿¬»êÀÚ '.' --- "±¸Á¶Ã¼ º¯¼ö"ÀÇ °¢ Ç׸ñÀ» ¼±ÅÃÇÒ ¶§(field selection)

	struct ABC {
	   int a;
	   int b;
	} x, *p;

    ÀÇ °æ¿ì¿¡ "±¸Á¶Ã¼ º¯¼ö" xÀÇ Ç׸ñ a ȤÀº b¸¦ ¼±ÅÃÇÒ ¶§´Â

	x.a = 100;
	x.b = 200;

    °ú °°ÀÌ »ç¿ëÇÑ´Ù.

(2) ¿¬»êÀÚ '->' --- "±¸Á¶Ã¼ Æ÷ÀÎÅÍ"ÀÇ °¢ Ç׸ñÀ» ¼±ÅÃÇÒ ¶§(field selection)
   
    "±¸Á¶Ã¼ Æ÷ÀÎÅÍ" p¸¦ ÀÌ¿ëÇÏ¿© a, b¸¦ °¡¸®Å³ ¶§´Â ¾Æ·¡¿Í °°ÀÌ »ç¿ëÇÑ´Ù.

	p = &x;		// Æ÷ÀÎÅÍ p´Â º¯¼ö x¸¦ °¡¸®Å°°Ô ÇßÀ½.
	p->a = 100;
	p->b = 200;

À§ ¿¹¿¡¼­ p´Â Æ÷ÀÎÅÍÀ̹ǷΠ*p´Â x¿Í µ¿ÀÏÇÏ´Ù. µû¶ó¼­ ÀϹÝÀûÀÎ Æ÷ÀÎÅÍ »ç¿ë¹ý¿¡ µû¶ó
À§ ¿¹´Â ¾Æ·¡¿Í °°ÀÌ ½áµµ ¹«¹æÇÏ´Ù.

	p = &x;
	(*p).a = 100;
	(*p).b = 200;

´Ù¸¸, p->a °¡ (*p).a º¸´Ù ÀÌÇØÇϱⰡ ´õ ÆíÇÏ°í readability°¡ ÁÁÀ¸¹Ç·Î
ÀϹÝÀûÀ¸·Î ÀÌ·¸°Ô ¾²´Â °æ¿ì´Â °ÅÀÇ ¾ø´Ù.

<Âü°í> (*p).a¸¦ *p.a ¶ó°í ¾²¸é ¾ÈµÈ´Ù. ¿Ö³ÄÇϸé '.'ÀÌ '*'º¸´Ù ¿ì¼±¼øÀ§°¡ ³ô¾Æ¼­
       *p.a ´Â *(p.a) ¿Í °°¾ÆÁö°Ô µÇ±â ¶§¹®ÀÌ´Ù.


6. Æ÷ÀÎÅÍ °ü·Ã ¼±¾ð¹® ¿¹

	int *p;		--- Æ÷ÀÎÅÍ º¯¼ö p, Á¤¼öÇü ÁÖ¼Ò ÀúÀå
	char *p;	--- Æ÷ÀÎÅÍ º¯¼ö p, ¹®ÀÚÇü ÁÖ¼Ò ÀúÀå
	int *p[n];	--- Å©±â nÀÎ Æ÷ÀÎÅÍ ¹è¿­ p, (p[0], ¡¦, p[n-1]¿¡ Á¤¼öÇü ÁÖ¼Ò ÀúÀå)

	int *p();	--- ÇÔ¼ö pÀÇ ¼±¾ð, "return°ªÀÌ int pointer"ÀÎ ÇÔ¼ö p
	int *p()[];	--- ÇÔ¼ö pÀÇ ¼±¾ð, "return°ªÀÌ int pointer ¹è¿­"ÀÎ ÇÔ¼ö p

	int (*p)[n];	--- Æ÷ÀÎÅÍ º¯¼ö p, "Å©±â nÀÎ Á¤¼öÇü ¹è¿­ ±¸Á¶¸¦ °®´Â ÁÖ¼Ò"¸¦ ÀúÀå
	int (*p)();	--- Æ÷ÀÎÅÍ º¯¼ö p, "return°ªÀÌ intÀÎ ÇÔ¼ö"ÀÇ ÁÖ¼Ò ÀúÀå
	int (*p[])();	--- Æ÷ÀÎÅÍ ¹è¿­ p, "return°ªÀÌ intÀÎ ÇÔ¼ö"ÀÇ ÁÖ¼Ò ÀúÀå