::: Zany's Homepage ::: Zany Wiki | »çÀÌÆ® ÅëÇÕ °Ë»ö
 
 
 

[C] Á¤Àû ¶Ç´Â µ¿ÀûÀ¸·Î ÇÒ´çµÈ ´ÙÂ÷¿ø ¹è¿­À» ÇÔ¼ö¿¡ Àü´Þ

°Ô½ÃÆÇ
C/C++ Basics
ÀÛ¼ºÀÚ
slipknot
ÀÛ¼ºÀÏ
2006-02-04 11:55:13
ÀÐÀº¼ö
9301
ÆòÁ¡
   
Ç¥½Ã¿É¼Ç
HTML»ç¿ë | ÀÚµ¿BRűנ| °ø¹é¹®ÀÚÇã¿ë | °¡¿îµ¥Á¤·Ä | °íÁ¤Æø±Û²Ã | ÀÚµ¿URL¸µÅ© | ¸¶¿ì½º¼±ÅÃ
Á¤Àû ¶Ç´Â µ¿ÀûÀ¸·Î ÇÒ´çµÈ ´ÙÂ÷¿ø ¹è¿­À» ÇÔ¼ö¿¡ Àü´ÞÇÒ ¶§,
¼­·Î ±¸º°ÇÏÁö ¾Ê°í ¾µ ¼ö ÀÖ´Â ¹æ¹ýÀÌ ÀÖÀ»±î?



¿Ïº®ÇÑ ¹æ¹ýÀº ¾ø´Ù. ´ÙÀ½ ¼±¾ðÀÌ ÀÖ´Ù°í ÇÒ ¶§:
int array[NROWS][NCOLUMNS];
int **array1;                /* ragged */
int **array2;                /* contiguous */
int *array3;                 /* "flattened" */
int (*array4)[NCOLUMNS];


Æ÷ÀÎÅ͵éÀº Áú¹® 6.16¿¡ ³ª¿Â °Íó·³ ÃʱâÈ­µÇ¾î ÀÖ´Ù°í °¡Á¤ÇÏ°í
ÇÔ¼ö ¼±¾ðÀº ´ÙÀ½°ú °°´Ù°í °¡Á¤ÇÑ´Ù.

void f1a(int a[][NCOLUMNS], int nrows, int ncolumns);
void f1b(int (*a)[NCOLUMNS], int nrows, int ncolumns);
void f2(int *aryp, int nrows, int ncolumns);
void f3(int **pp, int nrows, int ncolumns);


ÀÌ ¶§, f1a()¿Í f1b()´Â ÀϹÝÀûÀÎ ÀÌÂ÷¿ø ¹è¿­À» ÀÎÀÚ·Î ¹ÞÀ¸¸ç,
f2()´Â ÆîÃÄÁø(flattened) ÀÌÂ÷¿ø ¹è¿­À» ÀÎÀÚ·Î ¹ÞÀ¸¸ç,
f3()Àº [Æ÷ÀÎÅ͸¦ °¡¸®Å°´Â Æ÷ÀÎÅÍ]¸¦ ÀÎÀÚ·Î ¹Þ´Â´Ù.
µû¶ó¼­ ´ÙÀ½°ú °°ÀÌ È£ÃâÇÒ ¼ö ÀÖ´Ù.

f1a(array, NROWS, NCOLUMNS);
f1b(array, NROWS, NCOLUMNS);
f1a(array4, nrows, NCOLUMNS);
f1b(array4, nrows, NCOLUMNS);
f2(&array[0][0], NROWS, NCOLUMNS);
f2(*array, NROWS, NCOLUMNS);
f2(*array2, nrows, ncolumns);
f2(array3, nrows, ncolumns);
f2(*array4, nrows, NCOLUMNS);
f3(array1, nrows, ncolumns);
f3(array2, nrows, ncolumns);


´ëºÎºÐÀÇ ÄÄÇ»ÅÍ¿¡¼­ ´ÙÀ½ÀÇ È£Ãâµéµµ µ¿ÀÛÇÒ °ÍÀ̳ª,
Çò°¥¸®´Â ij½ºÆ®°¡ ÇÊ¿äÇÏ°í, µ¿ÀûÀÎ ncolumns°¡ Á¤ÀûÀÎ NCOLUMNS¿Í ÀÏÄ¡ÇÒ °æ¿ì¿¡¸¸ ¾µ ¼ö ÀÖ´Ù.

f1a((int (*)[NCOLUMNS])(*array2), nrows, ncolumns);
f1a((int (*)[NCOLUMNS])(*array2), nrows, ncolumns);
f1b((int (*)[NCOLUMNS])array3, nrows, ncolumns);
f1b((int (*)[NCOLUMNS])array3, nrows, ncolumns);

´Ù½Ã Çѹø ¸»ÇÏÁö¸¸ &array[0][0]À» (¶Ç´Â *array) f2()¿¡ Àü´ÞÇÏ´Â °ÍÀº
Ç¥ÁØ¿¡ Á¤È®È÷ ¸ÂÁö ¾Ê´Â´Ù.

¸¸¾à À§¿¡ ³ª¿­ÇÑ È£ÃâÀÌ ¾î¶»°Ô µ¿ÀÛÇÏ°í ¾î¶»°Ô ÀÛ¼ºµÇ´ÂÁö ÀÌÇØÇÑ´Ù¸é,
±×¸®°í ¿Ö ´Ù¸¥ Á¶ÇÕÀÌ µ¿ÀÛÇÏÁö ¾Ê´ÂÁö ¾Ê´Ù¸é, C ¾ð¾î¿¡¼­ ¹è¿­°ú Æ÷ÀÎÅÍ¿¡ ´ëÇØ
¸Å¿ì Àß ÀÌÇØÇÏ°í ÀÖ´Ù°í ¸»ÇÒ ¼ö ÀÖ´Ù.


À§¿¡¼­ ¾î¶² °ÍÀ» ¾µ °ÍÀÎÁö °áÁ¤Çϴµ¥ °í¹ÎÀÌ µÈ´Ù¸é,
´Ù¾çÇÑ Å©±â¸¦ °¡Áö´Â ´ÙÂ÷¿ø ¹è¿­À» ¸ðµÎ µ¿ÀûÀ¸·Î ¸¸µå´Â °ÍÀÌ ÇÑ ¹æ¹ýÀÌ µÉ ¼ö ÀÖ´Ù.

¸¸¾à ¸ðµç ¹è¿­ÀÌ ¾Æ·¡¿Í °°ÀÌ
´ÙÂ÷¿ø(multidimensional) ¹è¿­À» µ¿ÀûÀ¸·Î ÇÒ´çÇÏ´Â ¹æ¹ýÀ¸·Î ¼±¾ðµÇ¾ú´Ù¸é,

#include <stdlib.h>

int **array1 = malloc(nrows * sizeof(int *));
for (i = 0; i < nrows; i++)
  array1[i] = malloc(ncolumns * sizeof(int));

¶Ç´Â

int **array2 = malloc(nrows * sizeof(int *));
array2[0] = malloc(nrows * ncolumns * sizeof(int));
for (i = 1; i < nrows; i++)
  array2[i] = array2[0] + i * ncolumns;

¸ðµç ÇÔ¼ö´Â f3()ó·³ ¸¸µé¾î¾ß ÇÑ´Ù.

 °Ô½ÃÆÇ ±Û ¸ñ·Ï
No Subject Poster Hits Posted
4098 helix 3704 2013-02-01 13:43:13
4072 helix 2437 2013-01-21 20:16:22
1569 helix 3928 2007-04-19 00:34:25
708 slipknot 4405 2006-02-04 11:55:45
707 slipknot 3832 2006-02-04 11:55:29
slipknot 9301 2006-02-04 11:55:13
705 slipknot 3164 2006-02-04 11:54:54
704 slipknot 5010 2006-02-04 11:54:37
703 slipknot 2661 2006-02-04 11:54:14
702 slipknot 3160 2006-02-04 11:54:00
701 slipknot 4689 2006-02-04 11:53:29
ÄÚ¸àÆ®
ÀÛ¼ºÀÚ
                       
 
zany.kr
  Copyright ¨Ï 2002-2010 Zany's Programming Lab. All Rights Not Reserved.
temporary This Page loads on 0.016 Secs