No.2ベストアンサー
- 回答日時:
下のように書けばよいと思います。
#include <stdio.h>
void func(int arr[4][4]);
void func2(int (*arr)[4]);
int main(void)
{
int array[4][4];
func(array);
func2(array);
return 0;
}
void func(int arr[4][4])
{
}
void func2(int (*arr)[4])
{
}
関数プロトタイプを呼び出す際の引数にも、宣言時の引数にも同じようにhairetsu[4][4]と記載するのかと思っていました。
例に書いていただいた通り、関数プロトタイプを呼び出す引数の[4][4]を消してみたらうまくいきました。
勉強になりました。ありがとうございます。
No.5
- 回答日時:
配列の情報全体を渡したいのか、一要素の情報だけでよいのかによって解決方法は変わります。
元のコードでは、hairetsuは、hairetsu[0][0]~hairetsu[3][3]までしかありませんから、にもかかわらずhairetsu[4][4]と書けば、未定義の動作を引き起こしてしまいます。
関数プロトタイプを呼び出す際の引数にも、宣言時の引数にも同じようにhairetsu[4][4]と記載するのかと思っていました。
なるほど、宣言時とは違う意味になってしまうのですね・・・
勉強になりました。ありがとうございます。
No.4
- 回答日時:
kansuA() が示されたので、B も C もということで、3つの関数を作ってみました(BorlandC++5.5.1)。
解決の糸口になればよろしいのですが・・。
注:あえて関数側の引数名は、いっしょにしています。
実際の場面では、( main とも含め)それぞれ別の名前が間違いが少ないかと・・。
#include <stdio.h>
double kansuA( double [ 5 ][ 5 ] ); // [][ 5 ] でも
double kansuB( double [ 5 ] ); // [] でも
double kansuC( double );
int main()
{
double result;
double hairetsu[ 5 ][ 5 ];
hairetsu[ 3 ][ 1 ] = 9.111;
hairetsu[ 3 ][ 2 ] = 90.0;
hairetsu[ 4 ][ 4 ] = -99.111;
result = kansuA( hairetsu ); // [ 0 ][ 0 ] - [ 4 ][ 4 ] の25ケ
printf( "A %lf\n", result );
result = kansuB( hairetsu[ 3 ] ); // [ 3 ][ 0 ] - [ 3 ][ 4 ] の5ケ
printf( "B %lf\n", result );
result = kansuC( hairetsu[ 4 ][ 4 ] ); // #1「補足」と同じの1ケ
printf( "C %lf\n", result );
return( 0 );
}
double kansuA( double hairetsu[][ 5 ] ) // [ 5 ][ 5 ] でも
{
return( hairetsu[ 3 ][ 1 ] + hairetsu[ 3 ][ 2 ] );
}
double kansuB( double hairetsu[] ) // [ 5 ] でも
{
return( hairetsu[ 1 ] + hairetsu[ 9 ] ); // ★[ 9 ]注目
}
double kansuC( double hairetsu )
{
return( hairetsu );
}
注:インデントに全角空白を用いています。コピペ後、タブに一括変換して下さい。
関数プロトタイプを呼び出す際の引数にも、宣言時の引数にも同じようにhairetsu[4][4]と記載するのかと思っていました。
呼び出す際は、[4][4]の部分は省略するのですね・・・
勉強になりました。ありがとうございます。
No.3
- 回答日時:
resultA = kansuA(hairetsu[4][4]);
とかくとhairetsu[4][4]はdouble型になりますのでkansuAの引数として宣言しているdouble[4][4]と型が合わずにエラーが出ます。
resultA = kansuA(hairetsu);
と書くか、関数の仕様を
void kansuA(double foo);
とするのがよろしいかと。
むむむ なにやら難しいですね・・
どうも引数とか配列とか、「値を渡す」ということを理解できていないようです。。。
今回は、引数の[]を外したらうまくコンパイルできましたが、教えていただいたことをメモして後学に生かしたいと思います。
ありがとうございました。
No.1
- 回答日時:
具体的にどんなコードを書いたのか、補足してください。
この回答への補足
初心者でうろ覚えですが、以下のような感じです。
よろしくお願いします。
void kansuA(double hairetsu[4][4]);
void main (int argc, char**argv)
{
double resultA;
double hairetsu[4][4];
hairetsu[1][1] = 90;
hairetsu[1][2] = 0;
hairetsu[1][3] = 0;
hairetsu[2][1] = 0;
hairetsu[2][2] = 0;
hairetsu[2][3] = 0;
hairetsu[3][1] = 45;
hairetsu[3][2] = 90;
hairetsu[3][3] = 0;
resultA = kansuA(hairetsu[4][4]);
return 0;
}
---------------------------------
void kansuA(double hairetsu[4][4]){
なにかしらの処理
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# c言語 配列とポインタについて 3 2023/02/09 22:53
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- C言語・C++・C# c言語 コマンドライン引数 4 2023/02/09 18:47
- Excel(エクセル) エクセルでエラーを無視して一番左側のセルの値を返したい 2 2023/07/27 13:06
- UNIX・Linux bash環境でのエラー対応をお願い致します。 1 2022/11/26 17:41
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- Excel(エクセル) 年齢ごとの商品の販売個数を集計しようとしています。 a列が日付、b列が年齢、c列が販売個数のばあいで 4 2022/09/26 22:35
- C言語・C++・C# 関数ポインタの高速化のメリット 7 2023/05/05 20:15
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
これが怖いの自分だけ?というものありますか?
人によって怖いもの(恐怖症)ありませんか? 怖いものには、怖くなったきっかけやエピソードがあって聞いてみるとそんな感覚もあるのかと新しい発見があって面白いです。
-
ちょっと先の未来クイズ第5問
日本漢字能力検定協会が主催し、12月12日に発表される、2024年の「今年の漢字」に選ばれる漢字一文字は何でしょう?
-
好きな和訳タイトルを教えてください
洋書・洋画の素敵な和訳タイトルをたくさん知りたいです!【例】 『Wuthering Heights』→『嵐が丘』
-
C言語のポインターに関する警告
C言語・C++・C#
-
配列の要素数に変数を入れたいときには
C言語・C++・C#
-
C言語初心者の質問失礼します。
C言語・C++・C#
-
-
4
文字列から空白を取り除きたいのですが
C言語・C++・C#
-
5
long型の定数の末尾にLを付ける意味
C言語・C++・C#
-
6
typedef enumの使い方を教えてください
C言語・C++・C#
-
7
strcmp
C言語・C++・C#
-
8
バッファとは何ですか
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~12/6】 西暦2100年、小学生のなりたい職業ランキング
- ・ちょっと先の未来クイズ第5問
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
至急です! マクロ定義で #defi...
-
C 開放してるのにエラー(doubl...
-
C++で外積
-
C言語 関数プロトタイプ宣言の...
-
C言語初心者 構造体 課題について
-
c言語で、繰り返し文の中で、0....
-
C言語(プログラミング)関連の質...
-
doubleの変数にintとintの割り...
-
P値(統計学)を求めるプログラム
-
処理時間計測
-
c言語のプログラミングについて...
-
プログラムでの数字につく”f”の...
-
-1.#IND00と出てしまうのですが...
-
C言語における複素数の四則演算...
-
C言語を実行すると-infが出てき...
-
C言語のプログラムで質問です。
-
C言語で内積、、、わかりません。
-
3次方程式の求解プログラム(...
-
関数のプログラム
-
c言語のコンパイルエラー canno...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
C言語を実行すると-infが出てき...
-
c言語で、繰り返し文の中で、0....
-
C 開放してるのにエラー(doubl...
-
doubleの変数にintとintの割り...
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
float型とdouble型の変数の違い...
-
2次方程式の解を求めるプログ...
-
int とdoubleの比較
-
difftime()について
-
関数におけるif文とreturn文に...
-
物体が往復する動きを作りたい
-
Cで3乗根を求める方法
-
-1.#IND00と出てしまうのですが...
-
C言語の型による処理速度の違い
-
2分法で方程式の複数の解を自...
-
浮動小数点の定数
-
listに構造体を格納
-
c言語のコンパイルエラー canno...
おすすめ情報