質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

187閲覧

ポインタで悩んでいます。

Masalu_Kudou

総合スコア91

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2019/04/30 09:26

先ほどから他の方にも協力いただいているにも関わらず、どうも2次元配列のポインタで引っかかってしまいます。
現在下記のエラーが出ております。


invider.c:50: 警告: passing argument 1 of ‘initialize_top’ makes pointer from integer without a cast
inc/extern.h:9: note: expected ‘char (*)[71]’ but argument is of type ‘char’


原因はソース内のinitialize_topという関数に渡す引数がおかしいよという指摘のようです。
main関数内でinitialize_top関数を呼ぶときに、2次元配列を参照渡ししたいのですが、ソースにはどう書くのが正解でしょうか?

invider.c

1int main(void){ 2 char inputkey; //入力キー 3 int *position; //自分のキャラの位置 4 char result = 0; //下位関数戻り値 5 char display [DISPLAYROWMAX][DISPLAYCOLMAX]; // ゲーム画面 6 char *first_flg ; 7 8 initialize_top(display[DISPLAYROWMAX][DISPLAYCOLMAX]); //ここが指摘されてます。 9 10 *position = 0; 11 while (1) { 12 if (kbhit()) { 13 inputkey = getchar(); 14 switch(inputkey){ 15 case 'l': 16 result = move_right(position); 17 if(result == 1){ 18 continue; 19 }else{ 20 break ; 21 } 22 23 case 'h': 24 result = move_left(position); 25 if(result == 1){ 26 continue; 27 }else{ 28 break; 29 } 30 31 case 'q': 32 goto exit; 33 default: 34 ; 35 } 36 } 37 } 38exit: 39 return 0; 40}

initialize.c

1char initialize_top(char display[DISPLAYROWMAX][DISPLAYCOLMAX]){ 2 char loopcnt_col ; 3 for(loopcnt_col = 0;loopcnt_col < DISPLAYCOLMAX-1; loopcnt_col++){ 4 display[DISPLAYROWMAX-1][loopcnt_col] = '-' ; 5 } 6 7 display[DISPLAYROWMAX-1][DISPLAYCOLMAX-1] = '\n' ; 8 9 return 1 ; 10}

extern.h

1extern char initialize_top(char display[DISPLAYROWMAX][DISPLAYCOLMAX]);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

episteme

2019/05/01 00:15

もちっとマシなタイトル付けようや。 タイトルだけでおおよその質問内容がわかるよな。
Masalu_Kudou

2019/05/01 15:58

今後気を付けます。ご指摘ありがとうございます。
guest

回答1

0

ベストアンサー

initialize_top(display[DISPLAYROWMAX][DISPLAYCOLMAX]); //ここが指摘されてます。

"display[DISPLAYROWMAX][DISPLAYCOLMAX]" は、2次元配列の (DISPLAYROWMAX, DISPLAYCOLMAX) のデータ(char)を示してるので、関数 initialize_top の引数 (2次元配列 -> char * [DISPLAYCOLMAX]) と一致しません。
そのまま、display を渡してはどうでしょう。 (displayは、配列の先頭アドレスとなります)

投稿2019/04/30 09:35

pepperleaf

総合スコア6383

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Masalu_Kudou

2019/04/30 09:46

解消しました!ありがとうございます。
pepperleaf

2019/04/30 09:51

ちょっと説明不足の感があったですが、解決で良かったです。 (ここのシステム、ここに書込みが重なると、エラーなんで、追記、キャンセルしました)
Masalu_Kudou

2019/04/30 10:01

そうなんですね!知らなかったです。 後は自身でもう一度勉強してみますので、とにかく助かりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問