¡¡Ñ§Ï°c++µÄ¹ý³ÌÖУ¬Ö¸ÕëÊÇÄѵ㣬ÊìϤÁËÖ¸ÕëÖ®ºó£¬»¹ÓÐÒ»¸öÈÃÈ˺ܵ°ÌÛµÄÄѵ㣬ÄǾÍÊǺ¯ÊýÖ¸ÕëÁË¡£±¾²©ÎÄÏêϸ½éÉÜһϳ£¼ûµÄ¸÷ÖÖ¿ÓµùµÄº¯ÊýÖ¸Õë¡£
?
¡¡¡¡ÖÁÓÚÖ¸ÕëµÄÏêϸѧϰ£¬ÍƼöÕâÆª²©ÎÄ
C++Ö¸ÕëÏê½â
?
¡¡¡¡ÓëÊý¾ÝÒ»Ñù£¬º¯ÊýÒ²ÓеØÖ·£¬º¯ÊýµÄµØÖ·¾ÍÊÇÄÚ´æÖдæ·Åº¯ÊýÓïÑÔ´úÂëµÄÆðʼµØÖ·¡£º¯ÊýÖ¸Õë¾ÍÊÇÖ¸ÏòÕâ¸öµØÖ·¡£º¯ÊýÖ¸ÕëËùÖ¸ÏòµÄÀàÐÍ£¬¾ÍÊǺ¯Êý±¾Éí¡£ÎÒÃÇÖªµÀ£¬Ö¸ÕëËùÖ¸ÏòÀàÐÍ´ú±íÁËÖ¸ÕëËùÖ¸ÏòµÄÄÚ´æÇøÓòµÄ´óС¡£ËùÒÔº¯ÊýÖ¸ÕëËùÖ¸ÏòµÄÀàÐÍ£¬¾ÍÊǺ¯ÊýÔÚÄÚ´æÖÐËùÕ¼¾ÝÄÚ´æµÄ´óС¡£ÖªµÀÁ˺¯ÊýµÄÆðʼµØÖ·ºÍ´óС£¬ËùÒÔº¯ÊýÖ¸Õë¿ÉÒÔºÜÇáÒ׵ĴúÌæº¯ÊýÍê³Éº¯Êýµ÷Óá£
?
Ò»¡¢×î¼òµ¥µÄº¯ÊýÖ¸Õë
¡¡¡¡±äÁ¿¶¼°üÀ¨ÉùÃ÷ºÍ¸³Öµ£¬Ö¸Õë²»ÀýÍ⣬º¯ÊýÖ¸ÕëÒ²²»ÀýÍâ¡£ÎÒÃÇÀ´¿´Ò»¸ö¼òµ¥µÄº¯Êý£º
?
void add(int a, int b){
? ? cout << a + b << endl;
}
¡¡¡¡Ò»¸ö¼òµ¥µÄ¼Ó·¨¼ÆËã²¢Êä³öµ½ÃüÁîÐеĺ¯Êý¡£
?
¡¡¡¡ÄÇôÈçºÎͨ¹ýº¯ÊýÖ¸ÕëÀ´µ÷ÓÃËüÄØ£¿
?
¡¡¡¡1¡¢ÉùÃ÷£º
void (*p1)(int a, int b);
¡¡¡¡º¯ÊýÖ¸ÕëµÄÉùÃ÷ºÜ¼òµ¥£¬»ù±¾¾ÍÊÇͨ¹ýÒ»¸öÖ¸Õë°Ñº¯ÊýÃûÌæ»»¡£Ö¸Õëp1µÄÀàÐÍΪvoid (*) (int a,int b)£¬±íÃ÷Ö¸ÕëÊÇÒ»¸öÖ¸Ïòij¸öº¯ÊýµÄÖ¸Õ룬ָÕëÖ¸ÏòµÄÀàÐÍΪvoid () (int a,int b)
?
¡¡¡¡2¡¢¸³Öµ£º
p1 = add;
¡¡¡¡3¡¢Ò²¿ÉÒÔÖ±½Ó¶¨Ò壺
void (*p1)(int a, int b) = add;¡¡¡¡
¡¡¡¡×¢Ò⣬º¯Êývoid add(int a,int b)µÄº¯ÊýÃûadd¾ÍÊǺ¯ÊýµÄµØÖ·¡£½«µØÖ·add¸³Öµ¸øÖ¸Õëp1£¬ÄÇô¾Í¿ÉÒÔͨ¹ýº¯ÊýÖ¸Õëp1Ö±½Óµ÷Óú¯ÊýÁË¡£
?
¡¡¡¡4¡¢µ÷Óãº
(*p1)(1, 2);
p1(1, 2);
¡¡¡¡×¢Ò⣡³öÓÚÀúÊ·ÔÒòÒÔÉÏ2ÖÖ·½Ê½¶¼ÊÇ¿ÉÒÔµ÷Óú¯ÊýµÄ¡£
?
?
?
¶þ¡¢°üº¬¶à¸öº¯ÊýÖ¸ÕëµÄÊý×é
¡¡¡¡ÓÐʱºòÓÐÕâÖÖÇé¿ö£¬ÓÐÒ»¸öÊý×飬Êý×éÖеÄÿ¸öÔªËØ¶¼ÊÇÒ»¸öº¯ÊýÖ¸Õ룬¸ÃÔõô¶¨ÒåÕâ¸öÊý×éÄØ£¿
?
¡¡¡¡1¡¢½âÊÍ*p[n]ºÍ(*p)[n]
¡¡¡¡ÎÒÃÇÖªµÀ£¬[]ÔËËã·ûµÄÓÅÏȼ¶Òª¸ßÓÚ*£¬ËùÒÔ£¬p[3]±íʾº¬ÓÐ3¸öÔªËØµÄÊý×飬¶ø*p[3] Ç°ÃæµÄ " * " Ö¸Ã÷ÁËÊý×éÖÐÔªËØµÄÀàÐÍ£¬¼´*p[3]±íʾһ¸öÖ¸Ïò3¸öÖ¸ÕëµÄÊý×é¡£?
?
¡¡¡¡p[3]±íʾº¬ÓÐ3¸öÔªËØµÄÊý×飬ÄÇô(*p)[3]¾ÍÊÇÓà *p Ìæ»»ÁË p£¬ºÜÈÝÒ×Ïëµ½£¬(*p)[3] ±íʾָÏòÒ»¸ö°üº¬3¸öÔªËØµÄÊý×éµÄÖ¸Õë¡£
?
¡¡¡¡2¡¢ÉùÃ÷£º
void (*p2[2])(int a, int b);
¡¡¡¡Êý×éÃûΪp2£¬Êý×é´óСΪ2£¬Êý×éÖÐÔªËØÀàÐÍΪvoid (*)(int a, int b)£¬±íÃ÷ÔªËØÊÇÒ»¸öÖ¸Ïòij¸öº¯ÊýµÄÖ¸Õ룬ָÕëÖ¸ÏòµÄÀàÐÍΪvoid () (int a,int b)¡£
?
¡¡¡¡3¡¢¸³Öµ£º
p2[1] = add;
¡¡¡¡Àí½âÉϸúÉÏÃæÊÇÒ»ÑùµÄ¡£
?
¡¡¡¡4¡¢µ÷Óãº
p2[1](2,3);
(*p2[1])(3,4);?
¡¡¡¡Í¬ÑùÊÇ2ÖÖ·½Ê½¶¼¿ÉÒÔ¡£
?
?
?
Èý¡¢Ö¸Ïò¡°°üº¬¶à¸öº¯ÊýÖ¸ÕëµÄÊý×é¡°µÄÖ¸Õë
¡¡¡¡Õâ¸ö±êÌâºÃÏñÓеãÞÖ¿Ú¡£¼ò¶øÑÔÖ®£¬Õâ¸öÖ¸ÕëÖ¸ÏòÉÏÎÄÖÐµÄ ¡°°üº¬¶à¸öº¯ÊýÖ¸ÕëµÄÊý×顱 ¡£ÆäʵºÜ¼òµ¥£¬Ëµ°×ÁË£¬¾ÍÊǰÑÉÏÎÄÖеÄp2ÓÃÒ»¸öÖ¸ÕëÀ´´úÌæ¡£
?
¡¡¡¡1¡¢ÉùÃ÷£º
void (*(*p3)[2])(int a, int b);
?¡¡¡¡¿ÉÒÔ¿´µ½£¬Î޷ǾÍÊǰÑp2ÓÃ*p3´úÌæ¡£
?
¡¡¡¡2¡¢¸³Öµ£¬×¢Ò⣬¼ÈÈ»ÊÇÖ¸Õ룬ʹÓÃǰ±ØÐë³õʼ»¯£º
p3 = &p2;
(*p3)[1] = add;
¡¡¡¡×¢Ò⣡¼ÈȻʵÖÊÉϾÍÊǰÑp2ÓÃ*p3´úÌæ£¬c++11¿ÉÒԺܼòµ¥µÄÕâÑùÖ±½Ó¶¨Ò壺auto p3 = &p2; ´úÌæÁËvoid (*(*p3)[2])(int a, int b)= &p2;
?
¡¡¡¡3¡¢µ÷Óãº
(*p3)[1](1, 2);
((*p3)[1])(1, 2);
?