Cでグローバル2次元配列を宣言する必要があります。
配列のサイズは、特定の画像の幅と高さによって決まります。
したがって、最初に画像をロードしてから、配列を作成する必要があります。ただし、変数(この場合は配列)をグローバルにする場合は、関数内ではなくファイルの先頭で宣言する必要があります。
では、main()関数の実行後にのみ配列のサイズがわかっている場合、配列をグローバルとして宣言するにはどうすればよいですか?
編集:(私は他の解決策も試したので、このコメントはそれらすべてを参照しています)@Mimisbrunnrまず、迅速な対応に感謝します!
試しましたが、うまくいくかわかりません。私はおそらく愚かな何かを見逃していますが、「配列」はどのようにしてグローバルになりますか?test()で、「配列」は宣言されていないと表示されます
int *buffer;
int main() {
int i;
int x_size=100;
int y_size=100;
int * buffer = malloc(sizeof(int)*x_size*y_size);
int ** array = malloc(sizeof(int*)*y_size);
for(i = 0; i<y_size; i++) {
array[i]=&buffer[i*x_size];
}
array[0][1] = 5;
test();
return 0;
}
void test(){
printf("%d",array[0][1]);
}