簡體   English   中英

在 C 中的 function 中聲明全局變量(數組)

[英]Declaring global variable (array) inside a function in C

我需要在 C 中聲明一個全局二維數組。

數組的大小由給定圖片的寬度和高度決定。

所以我首先要加載圖片,然后才創建數組。 但是如果我想讓一個變量(在這種情況下,我的數組)是全局的,我必須在文件的頂部聲明它,而不是在 function 內。

那么,當我在執行 main() function 后才知道數組的大小時,如何將數組聲明為全局數組?

編輯:(我也嘗試過其他解決方案,所以這個評論指的是所有這些)@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]); }

創建一個全局指針,然后將 malloc 空間放入其中。

char * buffer;

int main(void) {

    buffer = malloc( /* Width * Height */ );

}

我沒有實際執行此代碼,但這應該可以幫助您入門。

int x_size = 100;
int y_size = 100;

int ** array;
array = malloc(sizeof(int *)*y_size);
for(int i = 0; i<y_size; i++)
array[i] = malloc(sizeof(int)*x_size);

larsmans 提出了一個很好的觀點。

那這個呢?

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(int i = 0; i<y_size; i++)
array[i] = &buffer[i*x_size];

看起來您可能需要一些基本的 C 教程。

int *buffer;
int **array;
int main()
{
int x_size=100;
int y_size=100;
int i;
/*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]);
}

使用static變量(指針)並使用malloc動態分配數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM