第四个没必要花时间去弄,顶多是面试的时候能看见,这个答不出来也无所谓,因为实际工作根本用不上。还有那些超多重的指针或者数组那些,顶多弄明白三重就差不多了。过于复杂的真心没必花大量时间去弄明白,以前我也钻过这样的牛角尖,现在工作才知道,钻通了也用不上
[此贴子已经被作者于2016-12-23 16:23编辑过]

程序代码:#include<stdio.h>
#include<stdlib.h>
int main()
{
int fun_0_0();
int fun_0_1();
int fun_0_2();
int fun_1_0();
int fun_1_1();
int fun_1_2();
int fun_2_0();
int fun_2_1();
int fun_2_2();
int ss=0;
typedef int (*COM)();
COM a[][3]=
{
{fun_0_0,fun_0_1,fun_0_2},
{fun_1_0,fun_1_1,fun_1_2},
{fun_2_0,fun_2_1,fun_2_2},
};
COM (*p)[3]=a;
while (1)
{
char cmd=0;
system("cls");
ss=(*(*(p+ss)+2))();
cmd=getch()-'0';
if (cmd<0||cmd>sizeof(a[0])/sizeof(void *)-2)
continue;
ss=(*(*(p+ss)+cmd))();
fflush(stdin);
}
}
int fun_0_0()
{
exit(0);
}
int fun_0_1()
{
return 1;
}
int fun_0_2()
{
printf("这里是导航菜单0\n");
printf("请输入:\n");
printf("1:切换到菜单1\n");
printf("0:退出程序\n");
return 0;
}
int fun_1_0()//
{
return 0;
}
int fun_1_1()
{
return 2;
}
int fun_1_2()
{
printf("这里是导航菜单1\n");
printf("请输入:\n");
printf("1:切换到菜单2\n");
printf("0:切换到菜单0\n");
return 1;
}
int fun_2_0()
{
return 0;
}
int fun_2_1()
{
return 1;
}
int fun_2_2()
{
printf("这里是导航菜单2\n");
printf("请输入:\n");
printf("1:切换到菜单1\n");
printf("0:切换到菜单0\n");
return 2;
}
[此贴子已经被作者于2016-12-24 07:33编辑过]

程序代码:#include <stdio.h>
int a[3]={1,2,3};
int *p[3]={&a[0],&a[1],&a[2]};
int *k[3]={&a[2],&a[1],&a[0]};
int main()
{
int a[3]={1,2,3};
int *p[3]={&a[0],&a[1],&a[2]};
int *(*s)[3]=NULL;
int i=0;
int *(*fun(int))[3];
s=fun(1);
for (i=0;i<3;i++)
printf("%d ",*(*s)[i]);
s=fun(0);
printf("\n");
for (i=0;i<3;i++)
printf("%d ",*(*s)[i]);
printf("\n");
return 0;
}
int *(*fun(int ff))[3]
{
if (ff)
return &p;
else
return &k;
}