① c語言如何計算一維數組個數
以上代碼中sizeof(a)的結果是40,而sizeof(int)的結果是4,len就是10,即數組a所佔int型的個數;
你可以進行循環判斷,當a[i]至a[9]都為0時,有效數值的個數為i
② C語言的一維數組長度有限制嗎
如果不是動態申請的,那麼數組大小取決於你的程序棧大小,如果是動態申請的,那麼數組的大小取決於你的可用物理內存的大小
③ c語言 自定義數組長度
說明數組之前先說明變數。
所有的變數在使用之前都必須先定義。為什麼呢?因為變數都是存放內存當中(當然一些存放在代碼段如單片機使用關鍵字code的變數另算),一般每個內存單元的大小是一個位元組,如果你在使用一個變數時沒有事先定義它的類型,也就是說,編譯器根本不知道該變數所佔的內存空間的大小,變數能存放的數據范圍也未知,這勢必會造成紊亂,兩個變數所規劃的內存地盤不明確,CPU在訪問時有沒有越界都不知道,這樣編譯器當然不會幫你干這種壞事啦。所以,一個變數在使用之前必須先定義(存儲方式、數據類型)。
好,再來說說數組。
數組是什麼概念,有木有深刻的理解過?好,我現在說說一維數組(其實多維數組也是一樣的)。
數組是一組具有相同類型並且有一定的相互關系的變數的集合。注意,每個數組元素都是一個變數。那這些有相互關系而且數據類型一樣的變數是怎麼存放在內存當中的呢?其實,他們是連續存放的,也就是說他們中間沒有間隔不相關的內存單元。而且編譯器也要事先知道你這個數組的長度是多少,才能分給你家多少內存。(就好像某某政府要分田地給老百姓,先數一下確定你家到底多少人口,才能分多少地給你家,不然不是浪費就是種田的時候種到別人家的田地去了,呵呵,是吧?這個編譯器是絕對不允許的)。
所以說,一個數組在定義時必須要事先規定好這個數組的長度,這樣編譯器才知道怎麼樣分配內存空間給這個數組。這里注意一點,數組的長度必須是一個常量,變數是不行的,變數的值可以改變,編譯器已經分配了多少空間給這個數組,怎麼能說變就變呢?因為編譯器是編譯器,程序是程序,這個跟定義一個變數是一樣的。
使用malloc函數,一般結合鏈表來用,鏈表存放的數據就不一定是連續的了。
等某一天你變成中國的計算機牛B人物了,可以想個辦法做個超吊的編譯器實現數組長度想怎麼變就怎麼變,哥也期待那一天,弟,你行的。
所以說,你想的太天真啦。哈哈。
④ C語言中第一維數組的大小的准確定義
ANSI C89標准中規定,一個數組的尺寸(下標)必須是一個整型常量表達式以便於在編譯時計算大小,而這里的所謂常量(或者常量表達式的運算結果),一般是指unsigned int。
16位編譯器(比如Turbo C)中,unsigned int為16位,因此數組最多32767個數據。
32位編譯器(比如Visual C++ 6.0)中,unsigned int為32位,因此數組最多4294967295個數據。
以上結論為理論值。
實際上,在VC++中,我們定義一個259025元素的整型數組,雖然可以編譯通過,但是我們仍將得到一個運行時錯誤(runtime error)。這主要跟堆和棧的大小有關,詳細情況請查閱操作系統相關資料。
錯誤代碼範例:
// VC++ 6.0 中
void main()
{
int a[259025]; // 運行時錯誤,259024是ok的。
char b[259025]; // ok。
char c[1036097]; // 運行時錯誤,1036096是ok的。
}
// TC2.0 中
void main()
{
int a[32768]; // 編譯錯誤,32767是ok的。
char b[65536]; // 編譯錯誤,65535是ok的。
}
⑤ c語言中對於一維數組長度為5位,但初始付值只有1,2,那其餘的位數由什麽來補
int a[5]={1,2} 只給前兩個賦值 後面的就默認為空(0)
如果輸出的話 printf("%d\n",a[0]);printf("%d\n",a[1]);printf("%d\n",a[2]);printf("%d\n",a[3]);printf("%d\n",a[4]);
結果就是1 2 0 0 0
⑥ C語言 如何測出一維數組長度
比如: int a[15] ;
那就是 sizeof(a) 測出a的位元組長度 , sizeof(int)測出int的長度,然後sizeof(a)/sizeof(int) 就是數組長度
⑦ 如何在C語言中取得一個一維的unsigned short數組的長度啊
unsigned short a[]={};
sizeof(a)/sizeof(unsigned short);
⑧ c語言 一維數組 長度自定的 輸入數組數組的長度 並且輸入n個數。
#include "stdio.h"
main()
{
int i,n;
float a[100];
printf("please input the length of array A:\n");
scanf("%d",&n);
printf("please input the %d numbers:\n",n);
for(i=0;i<n;i++)
{
scanf("%f",&a[i]);
}
printf("the numbers are:\n");
for(i=0;i<n;i++)
{
printf("%g\n",a[i]);
}
getch();
}
⑨ C語言問題 數組a的第一維數組大小為
C正確,選C——寫成{{1,2,3},{4,5,6},{7,8,}}——顯然有3行,所以第一維是3。
⑩ c語言怎麼獲取數組的長度
c語言中,定義數組後可以用sizeof命令獲得數組的長度(可容納元素個數)
如:
{
intdata[4];
intlength;
length=sizeof(data)/sizeof(data[0]);//數組占內存總空間,除以單個元素占內存空間大小
printf("lengthofdata[4]=%d",length);//輸出lengthofdata[4]=4
}
但,通過傳遞數組名參數到子函數中,以獲得數組長度是不可行的。如:
intgetLength(int[]a){
intlength;
length=sizeof(a)/sizeof(a[0]);//這樣是錯誤的,得到的結果永遠是1
returnlength;
}
因為,a是函數參數,到了本函數中,a只是一個指針(地址,系統在本函數運行時,是不知道a所表示的地址有多大的數據存儲空間,這里只是告訴函數:一個數據存儲空間首地址),所以,sizoef(a)的結果是指針變數a占內存的大小,一般在32位機上是4個位元組。a[0]是int類型,sizeof(a[0])也是4個位元組,所以,結果永遠是1。
因此,獲得數組長度,只能在數組定義所在的代碼區中,採用以上方法,才可以達到效果。
拓展資料:
數組特點:
數組是相同數據類型的元素的集合。
數組中的各元素的存儲是有先後順序的,它們在內存中按照這個先後順序連續存放在一起。
數組元素用整個數組的名字和它自己在數組中的順序位置來表示。例如,a[0]表示名字為a的數組中的第一個元素,a[1]代表數組a的第二個元素,以此類推。
對於VB的數組,表示數組元素時應注意:
下標要緊跟在數組名後,而且用圓括弧括起來(不能用其他括弧)。
下標可以是常量,變數,或表達式,但其值必須是整數(如果是小數將四捨五入為整數)。
下標必須為一段連續的整數,其最小值成為下界,其最大值成為上界。不加說明時下界值默認為1。