當前位置:首頁 » 編程語言 » c語言定義很大的全局數組
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言定義很大的全局數組

發布時間: 2022-08-21 13:31:42

『壹』 c語言中怎樣在頭文件中定義一個能夠在所有文件中都可以使用的全局數組變數

C語言可以通過在.c文件中定義,頭文件中extern的方式實現一個能夠在所有文件中都可以使用的全局數組變數。

具體做法如下:

  1. 設有一個多項目文件有 1.c、2.c和3.c三個源程序文件;

  2. 如果有一個全局數組需要所有文件使用,那麼可以添加一個data.c文件,在其中添加全局數組的定義;

  3. 向項目中添加data.h文件,在data.h文件中用 extern聲明該數組;

  4. 只需要在相應的.c文件中添加#include "data.h",那麼久可以使用data.c中的全局數組了。

『貳』 怎麼用C語言定義一個無限長的數組

C語言支持定義一個不顯式定義長度的數組,即通過初始化數據來分配數組長度。

比如int a[] = {1,2,3,4,5}; 數組a的長度沒有顯式給出,由於有5個初始化數據,所以分配空間長度為5個int型。

但是無論如何定義,數組的長度都是固定的,在定義的時候就已經分配好空間,從這個角度上C語言無法定義無限長的數組。但很多實際應用中又事先無法確定數組的長度,對於這類情況,一般有兩種方法可以使用。


1 由malloc和realloc兩個函數,分配動態空間,隨時按需改變數組的最大長度。

通過下面例子來理解該方法:

#include<stdio.h>
#include<stdlib.h>

intmain()
{
intsize=100;//最初為100個元素空間。
int*a=NULL;
inti=0;

a=malloc(sizeof(int)*size);
if(a==NULL)return-1;
while(scanf("%d",a+i)==1)//循環向a中輸入數據,直到輸入非數值字元為止
{
i++;
if(i==size)//數組空間不足
{
size*=2;//將數組空間擴大二倍,也可以改用size+=100;之類的操作,使size每次增加固定值。
a=realloc(a,size);//分配新的空間
if(a==NULL)
{
return-1;//這種情況下運行載體(如PC)內存不足以提供,中斷程序。
}
}
}

if(a)free(a);//對申請的內存進行釋放。
return0;
}

從以上程序可以看到,這種方式的原理就是每當數組空間不足時,利用函數realloc分配一段新的內存空間以增大數組長度。 直到占滿所有剩餘空間。

如果到占滿所有空間還是無法存下數據,那麼是硬體無法支持了。

所以這種方法可以做到軟體意義上的無限大數組空間。


但是這種方法代碼量比較大,而且需要頻繁的進行內存的分配,如果實現知道數據的最大可能規模,那麼可以用另一個方法。


2 事先知道數據的最大規模,比如統計一個班的分數時,一個班最多不超過百人,那麼可以直接定義一個長度為100的數組,或者保險起見,定義一個長度為1000的數組,並對其操作。這樣在操作范圍內,這個就是一個「無限長」的數組了。

『叄』 c語言,如何定義數組為全局變數

在C語言中,全局變數和函數聲明及定義並列,也就是說,聲明在最外層作用域的變數即為全局變

如在如下程序中

inti;

intmain()
{
inti_=i;
i=9;
return0;
}

int i就是一個全局變數,故在main函數中可以調用或修改i的值

所以,定義數組也和普通全局變數的方法相同,如

charstr[10];

intmain()
{
str[0]='a';
str[1]='';

return0;
}

拓展資料

C語言是一門通用計算機編程語言,應用廣泛。C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。

盡管C語言提供了許多低級處理的功能,但仍然保持著良好跨平台的特性,以一個標准規格寫出的C語言程序可在許多電腦平台上進行編譯,甚至包含一些嵌入式處理器(單片機或稱MCU)以及超級電腦等作業平台。

二十世紀八十年代,為了避免各開發廠商用的C語言語法產生差異,由美國國家標准局為C語言制定了一套完整的美國國家標准語法,稱為ANSI C,作為C語言最初的標准。目前2011年12月8日,國際標准化組織(ISO)和國際電工委員會(IEC)發布的C11標準是C語言的第三個官方標准,也是C語言的最新標准,該標准更好的支持了漢字函數名和漢字標識符,一定程度上實現了漢字編程。

『肆』 C語言中如何定義一個很大的全局數組

定義全局數組跟定義全局變數是一樣的,下面舉例來具體說明如何定義全局數組:

#include<stdio.h>
inta[100];//定義一個int類型的全局數組,數組中包含100個元素,每個元素類型都是int型
voidmain()
{
inti;
for(i=0;i<100;i++)
a[i]=i;//對全局數組進行初始化
}

『伍』 C中怎麼定義一個全局常量的數組

在任意一個函數之外,就想定義全局變數那種的位置

定義形式為

consttypename[size]={init_data_list};

比如

constunsignedcharname[5]={0x11,0x22,0x33,0x44,0x55}

『陸』 c語言定義全局數組問題

在C語言中,全局變數和函數聲明及定義並列,也就是說,聲明在最外層作用域的變數即為全局變數

如在如下程序中
int i;

int main()
{
int i_ = i;
i = 9;
return 0;
}
int i就是一個全局變數,故在main函數中可以調用或修改i的值
所以,定義數組也和普通全局變數的方法相同,如
char str[10];

int main()
{
str[0] = 'a';
str[1] = '\0';

return 0;
}

但是有幾點需要注意:
C中自上向下語法分析和編譯語法樹,如果要讓所有函數都能調用該全局變數,就要把其放在所有函數定義之前,確保聲明的作用域覆蓋整個程序;
在全局變數聲明時,其初始值必須為編譯時常量,不能為變數;
若要使用程序外的全局變數,需要在修飾符中加入extern關鍵字,並不要忘了和原本定義處鏈接

『柒』 用c語言如何定義一個較大的二維數組,例如1000行1000列

void main()
{
int a[1001][1001];
}
這樣定義沒有問題
Array size too large (數組太大)
分析:定義的數組太大,超過了可用內存空間。
可能是你的可用內存空間太小

『捌』 c語言如何定義100w個元素的數組,int a[1000000];這樣printf出不來結果

#include<stdio.h>
inta[1000000];//要放在外面。在main裡面和聲明稱全局變數的內存分配是不一樣的
//直接定義的話,是有限制的,因為直接定義是放在棧內存中的,而棧內存是有限的,
//所以,大量數據定義的話,應該放在堆內存中定義成靜態變數,或者new出空間來放數組
intmain(){
a[99999]=3;
printf("%d",a[99999]);
return0;
}

『玖』 c語言如何定義超過50萬的大數組

由於棧大小的限制,這種規模的數組不能存在棧上,所以必須放在堆中。C語言中申請堆空間使用函數malloc:

#include<stdlib.h>

int*arr;

arr=malloc(sizeof(int)*500000);
if(arr==NULL)
空間申請失敗;

注意要引用頭文件stdlib.h