这个看起来有点困难,萌新建议不要看,拿去问大佬。
运行即可看到结果,建议选学好指针和指针数组和数组指针后再回来看。
包括函数的两种传值方式,左值和又值。
两种使用方法都在main里写了,建议先运行看效果。
#include <stdio.h> #include <windows.h> /* char *bb[9]={NULL}; char *(*cc)[9]=NULL; fonts(0,bb); cc=(char *(*)[9])fonts(0,bb); */ char ** fonts(int i,char** ch){ switch(i){ case 0: ch[0]="*****"; ch[1]=" "; ch[2]="* *"; ch[3]=" "; ch[4]="* *"; ch[5]=" "; ch[6]="* *"; ch[7]=" "; ch[8]="*****"; break; case 1: ch[0]="* "; ch[1]=" "; ch[2]="* "; ch[3]=" "; ch[4]="* "; ch[5]=" "; ch[6]="* "; ch[7]=" "; ch[8]="* "; break; case 2: ch[0]="*****"; ch[1]=" "; ch[2]=" *"; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]="* "; ch[7]=" "; ch[8]="*****"; break; case 3: ch[0]="*****"; ch[1]=" "; ch[2]=" *"; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]=" *"; ch[7]=" "; ch[8]="*****"; break; case 4: ch[0]="* *"; ch[1]=" "; ch[2]="* *"; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]=" *"; ch[7]=" "; ch[8]=" *"; break; case 5: ch[0]="*****"; ch[1]=" "; ch[2]="* "; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]=" *"; ch[7]=" "; ch[8]="*****"; break; case 6: ch[0]="*****"; ch[1]=" "; ch[2]="* "; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]="* *"; ch[7]=" "; ch[8]="*****"; break; case 7: ch[0]="*****"; ch[1]=" "; ch[2]=" *"; ch[3]=" "; ch[4]=" *"; ch[5]=" "; ch[6]=" *"; ch[7]=" "; ch[8]=" *"; break; case 8: ch[0]="*****"; ch[1]=" "; ch[2]="* *"; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]="* *"; ch[7]=" "; ch[8]="*****"; break; case 9: ch[0]="*****"; ch[1]=" "; ch[2]="* *"; ch[3]=" "; ch[4]="*****"; ch[5]=" "; ch[6]=" *"; ch[7]=" "; ch[8]="*****"; break; } return ch; } int main(void){ char *bb[9]={NULL}; char *(*cc)[9]=NULL; fonts(0,bb); cc=(char *(*)[9])fonts(0,bb); for(int i=0;i<9;i++){ printf("bb=%s ",bb[i]); } for(int i=0;i<9;i++){ printf("cc=%s ",(*cc)[i]); } }