>>517-521
すいません、質問の仕方が悪かったです。
以下の違いがわかりません。

char *test(void){
char buffer[]="test";
return buffer;
}

int main(void){
printf("%s",test());
return 0;
}

では警告が出るのですが、

char test(void){
char buffer=1;
return buffer;
}

int main(void){
printf("%d",test());
return 0;
}

だと警告はでません。
コンパイラはBCCで、警告の内容は
警告 W8075 test62.c 6: 問題のあるポインタの変換(関数 test )
です。