A. c語言里數組的最大長度是多少
與機器條件、內存空間以及程序運行所用空間和編譯器有關。好點的機器 1000000是能到的。
我的電腦是98年的,只能到100000
B. C語言的數組最大可以定義多長,求高手解答,請不要很籠統說是系統內存什麼的還是硬體限制,麻煩詳細解釋一
數組只是一個語法概念,可以認為你是要分配一段連續的內存,在應用層有2種方式:
全局變數的方式,在函數外聲明,最大應該不能超過4GByte(32bit定址最大值),int就除與4,doubel再除2
局部變數的方式,在函數內聲明,屬於棧內存,就更小,確實跟操作系統和C庫相關,進程都有棧限制的,可以輸入命令ulimit查看,默認也就10K左右,當然你可以設置更大。
不會有數專門說這個數組大小的問題,它涉及的知識點會,棧內存,data段,以這些為關鍵字去看,整理理解吧。
C. c語言中一個字元串數組的最大長度是多少
只要內存足夠,數組不限制的。字元串變數的話,各語言中一般都是1G位元組(2的30次方-1)的限制。
D. 怎麼用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的數組,並對其操作。這樣在操作范圍內,這個就是一個「無限長」的數組了。
E. c語言數組最大長度
理論上,c語言數組最大的大小沒有限制,因為它用的是 虛擬存儲。
對於寫程序而言,例如要寫下標,那麼受 unsigned int 最大值的限制,只能用到十六進制 0xffffffff, 十進制4G多一點。
具體程序能獲取多大,就很難說,有時編譯可以通過,運行時出錯。你也可以用 malloc 動態分配請求,看分配是否成功或失敗。
對一般程序而言,數組長度通常夠用了。