2016-09-29 7 views
0

、それは主に行と列の既知数で空の2Dアレイを作製するためにC可能です。関数の戻りテーブル

主にいくつかの操作と完全2Dアレイを実行し、完全にそれを戻すために

my_function(r,c,my_array)int my_array[10][10]

は、関数(空)に渡しますか?

はいの場合:malloc-edする必要がありますか?動的に正しい?メインで「無料」? voidを使用するか、my_arrayを返しますか?私はインターネットでいくつかの例を見つけましたが、私は混乱しています。 ガイドにはどのような例がありますか?

+0

あなたは試してみましたが、全体の最小限のコードを表示してください。 「空」または「完全」配列のようなものはありません。明示的に値を割り当てるかどうかにかかわらず、すべての要素に* some *値があります。 –

+0

あなたは最小の検索努力と良いCの本で答えを見つけるでしょう。後者は、Cの基本的な概念を理解する必要があるかもしれません。 – Olaf

+0

[2次元配列を渡して参照として機能させる]可能な複製(http://stackoverflow.com/questions/11862054/pass-2d-array-to-function-参考文献) – tinman

答えて

1

あなたはこのように変数を定義する場合:

int my_array[10][10]; 

それは整数の2次元配列を作成します。これを行うと、mallocまたはfreeに何もありません。

次のようにmyfunctionを宣言します:

void myfunction(int r, int c, int array[r][c]) 

を次にこの関数の内部で、あなたがarrayを変更することができ、変更は、呼び出し元の関数で閲覧可能になります。この構文は、他の2つのパラメータに基づいて、可変サイズの配列パラメータを使用し

注意。

EDIT:

は、ここでは、これを使用することができる方法の例です:

void initialize(int r, int c, int array[r][c]) 
{ 
    int i,j; 
    for (i=0;i<r;i++) { 
     for (j=0;j<c;j++) { 
      array[i][j] = 0; 
     } 
    } 
} 

int main() 
{ 
    int my_array[10][10]; 

    initialize(10,10,my_array); 

    // my_array now contains all zeros 
    ... 
    return 0; 
} 
+0

ちょうどもう1つ:両方のディメンション(既にサポートしている)を渡しているので、両方のディメンションで配列通知を使用する方が簡単かもしれません。私はこれが主にスタイルの問題であると知っていますが、それはより良い意図を文書化しています。 – Olaf

+0

@dbush定義はメインの内部にあります。私はメインの内部の関数を呼び出し、引数としていくつかの操作を実行するために関数にテーブルを渡します..どんな助け? –

+0

@GiannisKalamaras:はい、そして?どうしたの?犯罪はありませんが、Cプログラミングのいくつかの必要な前提条件が不足しているようです。 – Olaf