![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?08b1c8b)
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も見ています
-
今年はじめたいことは?
今年はこれをはじめたい!ということを教えてください!
-
初めて自分の家と他人の家が違う、と意識した時
子供の頃、友達の家に行くと「なんか自分の家と匂いが違うな?」って思いませんでしたか?
-
あなたの「プチ贅沢」はなんですか?
お仕事や勉強などを頑張った自分へのご褒美としてやっている「プチ贅沢」があったら教えてください。
-
人生でいちばんスベッた瞬間
誰しも、笑いをとろうとして失敗した経験があると思います。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
C言語初心者の質問失礼します。
C言語・C++・C#
-
C言語のポインターに関する警告
C言語・C++・C#
-
long型の定数の末尾にLを付ける意味
C言語・C++・C#
-
-
4
配列の要素数に変数を入れたいときには
C言語・C++・C#
-
5
C言語 プロトタイプ宣言
C言語・C++・C#
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語の型による処理速度の違い
-
C言語のポインタのプログラムに...
-
たくさんの数の平均を求める方...
-
C言語のプログラムで#include<m...
-
プログラミングでのテイラー展開
-
qsortと動的確保の2次元配列
-
至急です! マクロ定義で #defi...
-
プログラムでの数字につく”f”の...
-
float型とdouble型の変数の違い...
-
.NET 小数点以下の切り捨てにつ...
-
(C言語)ニュートン法のプログ...
-
c言語 標準体重計算のプログラ...
-
C言語で直角三角形の斜辺を求め...
-
信頼区間の1.96や1.65ってどこ...
-
「Aに対するBの割合」と「Aに対...
-
Aの値からBの値を除するとは??
-
2÷3などの余りについて
-
マイナスからプラスへ転じた時...
-
エクセルで可視セルにのみ値貼...
-
C言語での引数の省略方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プログラムでの数字につく”f”の...
-
doubleの変数にintとintの割り...
-
C言語を実行すると-infが出てき...
-
C 開放してるのにエラー(doubl...
-
float型とdouble型の変数の違い...
-
c言語で、繰り返し文の中で、0....
-
至急です! マクロ定義で #defi...
-
C言語 関数プロトタイプ宣言の...
-
C言語の型による処理速度の違い
-
2次方程式の解を求めるプログ...
-
関数におけるif文とreturn文に...
-
int とdoubleの比較
-
C++で外積
-
C言語で台形公式を使った二重積...
-
指数の表示
-
C言語のpow関数の不具合
-
(C,C++言語)関数の引数は自動キ...
-
C言語のプログラムで#include<m...
-
数値を指数部と仮数部に分離したい
-
プログラミングでのテイラー展開
おすすめ情報