c語言對於不同的資料型別的陣列求長度方式稍微有不同的地方:
第一種使用strlen()
strlen()本質上是求位元組的個數,所以當有中文字元(占用位元組一般不為1)時,會產生差錯,而英文本元都是占用乙個直接,求位元組相當於求字元:
#include
#include
intmain()
輸出:
第二種使用sizeof()來完成
sizeof()可以獲取某個資料型別所占用空間的位元組數,通過這樣的方式來計算出陣列長度
#include
#include
intmain()
但這個時候輸出就出現了問題,你會發現輸出為定義的陣列長度,而不是輸出陣列內資料的長度,所以,使用時有一定的條件限制
可以使用迴圈遍歷陣列
#include
#include
intmain()
;while
(a[i]
) i++
;printf
("%d"
,i);
int}
成功輸出:
但是當陣列中有零時例如將a陣列中2改為0:
char a[10]
=;
輸出為:
所以由於while判斷的原因會產生遍歷中斷
2,和字串一樣同樣採用sizeof()方法來進行,也同樣具有侷限性
#include
#include
intmain()
;printf
("%d"
,sizeof
(a)/
sizeof
(int))
;}
結果依舊為定義陣列的長度:
C 求陣列長度
c c 中沒有提供直接獲取陣列長度的函式,對於存放字串的字元陣列提供了乙個strlen函式獲取長度,那麼對於其他型別的陣列如何獲取他們的長度呢?其中一種方法是使用sizeof array sizeof array 0 在c語言中習慣上在 使用時都把它定義成乙個巨集,比如 define get arr...
求陣列長度
c 求陣列長度為 int arr length sizeof arr sizeof arr 0 為了方便使用,在c語言中常定義巨集來求陣列長度 define arr len array,length 使用時,直接呼叫巨集函式即可,如 int arr int len arr len arr,len 此...
c 求陣列長度 和vector用法
int len sizeof arr size arr 0 1 vector int a 10 定義了10個整型元素的向量 尖括號中為元素型別名,它可以是任何合法的資料型別 但沒有給出初值,其值是不確定的。2 vector int a 10,1 定義了10個整型元素的向量,且給出每個元素的初值為1 ...