陣列長度計算
(1)sizeof
方法:sizeof(陣列名)/ sizeof(陣列型別名)
說明:陣列佔用位元組除以陣列型別所佔位元組,結果為陣列元素個數
(2)strlen
說明:strlen,求字串有效長度
方法:strlen(字元陣列名) //結果為字元陣列有效字元長度,不包括末尾的' /0'
當陣列作為函式引數傳遞時,陣列名代表的是陣列的首址,而非陣列內容,故無法使用sizeof和strlen;
所以,在傳址時,應提供2個引數:1個是陣列名,代表陣列首地址;1個是陣列元素個數,以便確定傳遞的次數。 例如: #include<iostream
void Sum(int array[ ])
{
cout<<"sizeof(array)="<<sizeof(array)<<endl;
}
void main()
{
int a[ ]={1,2,3,4,5,6,7,8,9,10};
cout<<"sizeof(a)="<<sizeof(a)<<endl;
Sum(a);
} 運算結果為: sizeof(a)=40
sizeof(array)=4 分析: 當陣列作為函式引數傳遞時,陣列名代表的是陣列的首址,即指標,而非陣列內容。如果傳遞整個陣列,會導致棧溢位的。 所以在主函式中使用sizeof計算出的是準確的陣列長度。而在呼叫函式中,由於傳遞的陣列不再是陣列本身,而是其地址,所以用sizeof計算出的,實際上是陣列地址的長度,這時的sizeof(array),實際上是sizeof(int)。