こんな感じの変数を宣言した場合、関数に渡すときって
どんな感じでやればいいのでしょうか?

char *buf[4][8];

今は下みたいにしていて、コンパイルは通るけど
sub関数でmemcpyをして、その値を出そうとするとcoreを吐いてしまうのですが

void sub( char *[][] );
main(){
char *buf[4][8];
sub( buf );
}

sub( char buf[][8] ){
}