int main()
のグローバル変数として定義されているのは、a[][]
の行列です。変数を初期化していません。Cの行列:関数はローカル変数を共有していますか?
そして私はいくつかの機能を使用する:
最初のもの:適切な範囲内の全てのiとjの引数として行列
a
を受信し、特定の値(ランダム)としてa[i][j]
を定義し、この。この関数は単に1を返します。第2のもの:行列
a
を引数として受け取り、単純に出力します。また、この関数は単に1を返します。最後:引数行列
a
として受信し、単純に、私は考え
値の値とリターンの最大値を決定するためにいくつかのポインタを定義せずにはっきりコードを書きます行列の変数をすべての関数からグローバルかつ共有可能にするために、コードは単純に機能しませんでした。しかし、それは働いた。 私はグローバルな方法で行列を定義していないので、それはうまくいかないと思っていましたが、関数内でだけがと定義されていて、(私にとって:)他の関数に渡すふりをしています。
私の質問は:なぜそれが働いたのですか?
コード:
int matrix_definition(int a[][], int dim);
int matrix_print(int a[][], int dim);
int max_matrix(int a[][],int dim);
int main()
{
int a[][], dim;
matrix_definition(a,dim);
matrix_print(a,dim);
printf("%d", max_matrix(a,dim));
return 0;
}
メイン()とmatrix_definitionを含む完全なコードはこれです:あなたが投稿
#include<stdio.h>
#define SIZE 100
int matrix_definition(int a[SIZE][SIZE], int dim);
int matrix_print(int a[SIZE][SIZE], int dim);
int max_matrix(int a[SIZE][SIZE],int dim);
int main()
{
int a[SIZE][SIZE], dim;
matrix_definition(a,dim);
matrix_print(a,dim);
printf("%d", max_matrix(a,dim));
return 0;
}
int matrix_definition(int a[SIZE][SIZE],int dim)
{
int i,j;
srand(time(NULL));
for(i=0;i<dim;i++)
{
for(j=0;j<dim;j++)
{
a[i][j]=rand()%2;
}
}
return 1;
}
未定義の動作へようこそ。マシンをクラッシュせずに未定義のメモリゾーンに書き込むことができるなら、おそらくそれを読み取ることができます... –
このコードはまったくコンパイルしないでください。 – dbush
'私はint main()'でグローバル変数として定義しましたが、そうしませんでした。 –