2011-03-09 17 views
2

は、私たちは、私は次のメソッドのプロトタイプを持っているとしましょう:Cでint配列の配列を作成していますか?

void mix_audio(int *vocal_data_array, int *instrumental_data_array, int *mixed_audio_array, FOURTH ARGUMENT) 
{ 


} 

はどのようになります。四番目の引数として渡すように

  1. は、上記の引数の前にarray_of_arraysを初期化?

  2. この方法では、my array_of_arraysの最初の値がvocal_dataという配列になり、my配列の2番目の値がinstrumental_data_array、3番目の値がmixed_audio_arrayになるようにします。

  3. どのように後でarray_of_arrays内の最初の配列のすべての値をループしますか?

私はここであまりにも多くのことを尋ねていないことを願っています。私はちょうどそれが誰かがかなりすぐに吐き出すことができる単純な構文だと思った:)

ありがとう!


EDIT 1

私は私の例で長さ3のarray_of_arraysを示してきたが、私は実際には配列の可変長が含まれている可能性が何かを作成するために探していますのでご注意ください。整数の配列の例を使用してアレイの割り当てについては

+1

の配列からデータを抽出する方法を示し、すべてのパラメータを持つことが冗長ではないでしょう3つの単一配列と、前者の3つを含む第4の配列? – hennes

答えて

1

int** x = malloc (sizeof (int*) * rows); 
if (! x) { 
    // Error 
} 

for (int i = 0; i < rows; ++i) { 
    x[i] = malloc (sizeof (int) * columns); 
    if (! x[i]) { 
     // Error 
    } 
} 
2

あなたの質問から、あなたが実際にあなたの配列を含むstructを望むようにそれは、のようなものに聞こえる:

struct AudioData { 

    int* vocal_data_array; 
    unsigned int vocal_data_length; 

    int* instrumental_data_array; 
    unsigned int instrumental_data_length; 

    int* mixed_audio_array; 
    unsigned int mixed_audio_length; 
}; 
5

シンプルに配列の配列とそれを渡す方法を示す関数私はちょうど何かが関数に渡されたことを示すために配列に偽の値を追加し、それを元に戻すことができました。配列のサイズ(3)は任意であり、必要なサイジングに変更できます。各アレイのサイズは異なります(ギザギザアレイと呼ばれます)。それはあなたの3つの基準を示しています

初期化は、arrayOfArraysの各インデックスに値を割り当て、関数が配列

#include <stdio.h> 

void mix_audio(int *arr[3]); 

int main() { 
    int *arrayOfArrays[3]; 

    int vocal[3] = {1,2,3}; 
    int instrumental[3] = {4,5,6}; 
    int mixed_audio[3] = {7,8,9}; 

    arrayOfArrays[0] = vocal; 
    arrayOfArrays[1] = instrumental; 
    arrayOfArrays[2] = mixed_audio; 

    mix_audio(arrayOfArrays); 

    return(0); 
} 

void mix_audio(int *arr[3]) { 
    int i; 
    int *vocal = arr[0]; 
    int *instrumental = arr[1]; 
    int *mixed_audio = arr[2]; 

    for (i=0; i<3; i++) { 
    printf("vocal  = %d\n", vocal[i]); 
    } 
    for (i=0; i<3; i++) { 
    printf("instrumental = %d\n", instrumental[i]); 
    } 
    for (i=0; i<3; i++) { 
    printf("mixed_audio = %d\n", mixed_audio[i]); 
    } 
} 
関連する問題