本文目錄一覽:
C語言中關於數組長度
可以使用c本身有的函數啊!!
首先說明一點,關於數組的長度有在定義時給出的長度,但定義時的長度不一定都用完,很可能有好多空間沒有用到,此時就有實際長度的概念;
比如:int s[10];
s[10]={1,2,3,4,5,6};
定義整型數組s的長度是10,但是賦初始值時只賦了6個,那麼6就是數組的實際長度!!
關於整型數組實際長度的求法,可以在輸入的時候就設置計數器變量,每輸入一個數就自動加一。
關於字符數組也有定義時的長度和實際長度;我們很多時候用到的就是實際長度:其求法可以用strlen()函數求道;
比如:char s[60];
cins;
coutstrlen(s);
就可以啦!!
假如輸入的是:abcdefghj
輸入個數:9
c語言怎麼獲取數組的長度
c語言中,定義數組後可以用sizeof命令獲得數組的長度(可容納元素個數)
如:
{
int data[4];
int length;
length=sizeof(data)/sizeof(data[0]); //數組占內存總空間,除以單個元素占內存空間大小
printf(“length of data[4]=%d”, length ); //輸出length of data[4]=4
}
但,通過傳遞數組名參數到子函數中,以獲得數組長度是不可行的。如:
int getLength(int[] a){
int length;
length=sizeof(a)/sizeof(a[0]); //這樣是錯誤的,得到的結果永遠是1
return length;
}
因為,a是函數參數,到了本函數中,a只是一個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這裡只是告訴函數:一個數據存儲空間首地址),所以,sizoef(a)的結果是指針變量a占內存的大小,一般在32位機上是4個字節。a[0]是int類型,sizeof(a[0])也是4個字節,所以,結果永遠是1。
因此,獲得數組長度,只能在數組定義所在的代碼區中,採用以上方法,才可以達到效果。
拓展資料:
數組特點:
數組是相同數據類型的元素的集合。
數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。
數組元素用整個數組的名字和它自己在數組中的順序位置來表示。例如,a[0]表示名字為a的數組中的第一個元素,a[1]代表數組a的第二個元素,以此類推。
對於VB的數組,表示數組元素時應注意:
下標要緊跟在數組名後,而且用圓括號括起來(不能用其他括號)。
下標可以是常量,變量,或表達式,但其值必須是整數(如果是小數將四捨五入為整數)。
下標必須為一段連續的整數,其最小值成為下界,其最大值成為上界。不加說明時下界值默認為1。
C語言中普通數組在定義的時候不給出數組的具體長度,那麼計算機是在運行期間為其分配長度的嗎?
變長數組:數組長度為變量,在編譯期間不能確定數組長度,要等到程序運行後,變量賦值後(數組定義語句不要寫在變量賦值之前!),才能給數組分配內存。
變長數組本質還是靜態數組(定義前大小可變,但定義後不能改變大小)。
要定義動態數組需要用malloc函數來申請內存。
c語言數組最大長度
理論上,c語言數組最大的大小沒有限制,因為它用的是 虛擬存儲。
對於寫程序而言,例如要寫下標,那麼受 unsigned int 最大值的限制,只能用到十六進制 0xffffffff, 十進制4G多一點。
具體程序能獲取多大,就很難說,有時編譯可以通過,運行時出錯。你也可以用 malloc 動態分配請求,看分配是否成功或失敗。
對一般程序而言,數組長度通常夠用了。
原創文章,作者:IOKW,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/148156.html