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