²¾°ú¿ôÀë¸À¤Ë¤ª¤¤¤Æ¤Ï¡¢´Ø¿ô¤ÎÀë¸À¤Ï´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ÎÀë¸À¤ËÄ´À°¤µ¤ì
¤Þ¤¹¡£¤³¤ì¤Ï¡¢Æ±¤¸¤¯²¾°ú¿ôÀë¸À¤Ç¡¢ÇÛÎó¤ÎÀë¸À¤¬¥Ý¥¤¥ó¥¿¤ÎÀë¸À¤ËÄ´À°
¤µ¤ì¤ë¤Î¤ÈƱ¤¸¤è¤¦¤ÊÍýͳ¤Ë¤è¤ë¤â¤Î¤Ç¤¹¡£¤Þ¤ºÇÛÎó¤Î¾ì¹ç¤Ë¤Ä¤¤¤ÆÀâÌÀ
¤·¤Þ¤¹¡£²¼¤Î´Ø¿ô g ¤Î²¾°ú¿ôÀë¸À char x[] ¤Ï char *x ¤ËÄ´À°¤µ¤ì¤Þ¤¹¡£
void g(char x[]) /* (A) ÇÛÎó¤ÎÀë¸À¤ò¥Ý¥¤¥ó¥¿¤ÎÀë¸À¤ËÄ´À° */
{
x[0] = 1;
}
void f(void)
{
char x[10];
g(x); /* (B) ÇÛÎó̾ x ¤Ï¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤µ¤ì¤ë */
}
(A)¤ÎÄ´À°¡¢(B)¤ÎÊÑ´¹¤Ï¡¢ÇÛÎó¤Î»²¾ÈÅϤ·¤ò¼Â¸½¤¹¤ë¤«¤é¤¯¤ê¤òÄ󶡤¹¤ë¤â
¤Î¤À¤È¹Í¤¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¼ÂºÝ¤Ë¤Ï´Ø¿ô¤Ë¤Ï¥Ý¥¤¥ó¥¿¤¬ÅϤµ¤ì¤Æ¤¤¤ë¤Î
¤Ç¤¹¤¬¡¢¸«¤«¤±¤Ç¤Ï¡¢ÇÛÎó¤¬ÅϤµ¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¸«¤¨¤Þ¤¹¡£¤³¤Î¤è¤¦¤Ê¡Ö¤ß
¤»¤«¤±¡×¤ò·ù¤¦¤Ê¤é¡¢²¾°ú¿ôÀë¸À¤ÇÁÇľ¤Ë¥Ý¥¤¥ó¥¿¤òÀë¸À¤Ç¤¤Þ¤¹¡£
´Ø¿ô¤Î¾ì¹ç¤âƱÍͤǤ¹¡£²¼¤Î´Ø¿ô g ¤Î²¾°ú¿ôÀë¸À void x(void) ¤Ï
void (*x)(void) ¤ËÄ´À°¤µ¤ì¤Þ¤¹¡£
void g(void x(void)) /* (A') ´Ø¿ô¤ÎÀë¸À¤ò´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ÎÀë¸À¤ËÄ´À° */
{
x(); /* ¤â¤Á¤í¤ó (*x)() ¤Ç¤â¤è¤¤ */
}
void f(void)
{
void func(void);
g(func); /* (B') ´Ø¿ô»Ø¼¨»Ò func ¤Ï¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤µ¤ì¤ë */
}
¼Â°ú¿ô¤ÎÇÛÎó̾¤¬¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤µ¤ì¤ë¤Î¤ÈƱ¤¸¤è¤¦¤Ë¡¢¼Â°ú¿ô¤Î´Ø¿ô»Ø¼¨
»Ò(Î㤨¤Ð´Ø¿ô̾)¤Ï´Ø¿ô¤Ø¤Î¥Ý¥¤¥ó¥¿¤ËÊÑ´¹¤µ¤ì¤Æ¤«¤é´Ø¿ô¤ËÅϤµ¤ì¤Þ¤¹¡£
¼õ¤±¼è¤ê¦¤Ç¤Ï²¾°ú¿ô¤Î´Ø¿ôÀë¸À¤ò¥Ý¥¤¥ó¥¿Àë¸À¤ËÄ´À°¤·¤Æ¤³¤Î¥Ý¥¤¥ó¥¿¤ò
¼õ¤±¼è¤ê¤Þ¤¹¡£(A')(B')¤¬¥»¥Ã¥È¤Ë¤Ê¤Ã¤ÆÆ¯¤¡¢´Ø¿ô¤Ë´Ø¿ô¤òÅϤ·¤Æ¤¤¤ë¤«
¤Î¤è¤¦¤Ê¡Ö¤ß¤»¤«¤±¡×¤òÄ󶡤·¤Þ¤¹¡£ÇÛÎó¤Î¾ì¹ç¤ÈƱÍͤˡ¢¤³¤Î¤è¤¦¤Ê¡Ö¤ß
¤»¤«¤±¡×¤ò·ù¤¦¤Ê¤é¡¢¤ä¤Ï¤ê²¾°ú¿ôÀë¸À¤ÇÁÇľ¤Ë¥Ý¥¤¥ó¥¿¤òÀë¸À¤Ç¤¤Þ¤¹¡£
|