問題点と注意点があります。
(1)情報の寿命の理解が不十分です。
ローカル変数を別関数に渡すのは一時的なものに過ぎませんので、渡した瞬間のみしか意味がありません。
なので、yomikomi()からbyouga()へkyara引数の呼び出しの瞬間しか意味を持ちません。
mainからbyouga()を呼び出すためには、この情報(kyara)はyomikomi()からもbyouga()からもタイミング関係なしに参照可能である必要があります。
(2)変数のスコープに関しての理解が不十分です。
コード:
static kyara1 kyara[2]={
{0,0,"sibahu.png"},
{0,0,"syujinkou.png"}
};
これはローカル変数ではなく、関数外に出すことでファイルスコープ(ファイル内参照可能な変数)となります。
これでyomikomi()とbyouga()の両方から参照可能になります。
(3)関数は機能以外の事をしてはならない。
byouga()内からsyujinkou(&kyara[1]);を呼びだしていますが、描画関数と定めた以上は移動処理など他のことしてはいけません。
これは、はかの人には動作の誤解と自分自身の齟齬を生む原因となります。
移動処理の関数を追加してください。
(4)描画処理は最後でなくてはならない。
syujinkou(&kyara[1]);
を最後に呼びだしていますが描画は最後に行ってください。
描画後に移動するとか、移動と描画が交互に来るとかすると画面上の表示と実際の内部の状態が食い違ってややこしいことになります。
(5)外部関数のプロトタイプ宣言はヘッダに書きましょう。
void byouga(kyara1[]);
void syujinkou(kyara1*);
void yomikomi();
この場合は、kyara.hですね。
何処のソースファイルに属するか明確になるので一般的な方法です。
ここらへんのヒントになる情報は、Dixq(管理人)さんの
「新・C言語 ~ゲームプログラミングの館~ [DXライブラリ]」
http://dixq.net/g/
に詳しく書かれています。
d.1 メイン関数の作り方
d.2 複数のファイルにわけてコンパイルする
d.3 ゲームの設計と分割コンパイル(1)
d.4 ゲームの設計と分割コンパイル(2)
d.5 ゲームの設計と分割コンパイル(3)
はじっくりと読んでくださいね。