輸入一串數字,定義為整型陣列,要如何求陣列長度呢?
解決方案sizeof(s)/sizeof(int) s是定義的陣列,即用陣列所佔的記憶體大小除以整型占得記憶體,就會得到陣列的長度。
測試程式如下(環境:ubuntu 2013):
#include
#include
#include
intmain() ;
intlen=sizeof(s)/sizeof(int);
printf(
"%d\n"
,len);
return0; }
測試結果:
10 可以求出陣列的正確長度。
由此引申到另乙個問題,是不是其他一些常用的,需要求長度的型別都可以用這種方法來求陣列的長度呢?於是在同樣的環境中測試了以下幾種變數型別的值。
char:當然這個陣列結束標誌很明顯』\0』,用這種方法求出的長度是加上最後的結束符「\0」的。
#include
#include
#include
intmain()
;//包含結束符
\0,每個單引號中只有乙個字元
intlen=sizeof(c)/sizeof(char);
printf(
"%d\n"
,len);
return0; }
測試結果:
11陣列長度加上
\0的長度,即陣列長
+1。當然字元陣列有明顯的結束標誌,可以用判斷元素是否為
\0的方法求長度。另:根據陣列的定義形式不同,上文
char c
一句還可以換成:
charc=;
這樣可以不寫出最後的
\0,但是它還是存在的,故求得的長度也是11。
double:與int型類似,測試程式如下:
#include
#include
#include
intmain() ;
intlen=sizeof(d)/sizeof(double);
printf(
"%d\n"
,len);
return0; }
測試結果:
10是陣列的數字個數。
float
型與double
類似。
C語言獲取陣列長度
1 c語言中,定義陣列後可以用sizeof命令獲得陣列的長度 可容納元素個數 例如 double a int length length sizeof a sizeof a 0 陣列佔記憶體總空間,除以單個元素佔記憶體空間大小 printf length of a d length 輸出length...
c語言求陣列長度
c語言對於不同的資料型別的陣列求長度方式稍微有不同的地方 第一種使用strlen strlen 本質上是求位元組的個數,所以當有中文字元 占用位元組一般不為1 時,會產生差錯,而英文本元都是占用乙個直接,求位元組相當於求字元 include include intmain 輸出 第二種使用sizeo...
C語言裡獲取陣列長度
c語言無法直接獲取陣列長度,但可以用sizeof 關鍵字獲取陣列實際可存放元素個數 不是陣列存放了多少元素 c語言裡,通過傳遞陣列名引數到子函式中,以獲得陣列長度是不可行的 先說1 用 sizeof 可以獲得資料型別或變數在記憶體中所佔的位元組數。同樣,用 sizeof 也可以獲得整個陣列在記憶體中...