ランダムな値(0〜9)で連続した配列を作成しましたが、その配列を出力する関数に渡す方法はわかりません。Cでパラメータとして連続配列を渡す方法は?
今は、私はそれを印刷する必要があるときはいつでもmain関数の中の配列を繰り返し処理しています。しかし、私はそのための機能を持っている、それは私のコードクリーナーを作るだろう。
最小限のコード例は以下の通りです:
#include <stdio.h>
#include <stdlib.h>
int **alloc_2d_int(int rows, int cols);
int main(int argc, char** argv){
int **matrix;
int i,j,size=3;
matrix = alloc_2d_int(size,size);
// generate the array
for (i=0; i<size; i++)
{
for (j=0; j<size; j++)
{
matrix[i][j] = rand() % 10;
}
}
// how I print the array right now
for (i=0; i<size; i++)
{
for (j=0; j<size; j++)
{
printf("[%d][%d]=%d\n", i,j,matrix[i][j]);
}
}
// this is how I want the printing to happen
print_arr(matrix,3);
}
int **alloc_2d_int(int rows, int cols) {
int *data = (int *)malloc(rows*cols*sizeof(int));
int **array= (int **)malloc(rows*sizeof(int*));
int i;
for (i=0; i<rows; i++)
array[i] = &(data[cols*i]);
return array;
}
void print_arr(int **array,int size)
{
int i,j;
for (i=0; i<size; i++)
{
for (j=0; j<size; j++)
{
printf("matrix[%d][%d]=%d\n", i,j,array[i][j]);
}
}
}
エラーメッセージ: 'print_arr' の 相反するタイプの[デフォルトで有効になって]
、あなたのコードは動作します:http://ideone.com/qMQqtK – mch
それとも... main''上 'print_arr'機能を移動します。基本的に、コンパイラはソースファイルを上から下に解析します。実際に使用される前に、前方宣言を提供するか、関数定義*を移動する必要があります。 –