C語言如何計算陣列的長度
(1)藉助sizeof()函式 :
#include<stdio.h> int main() { // 定義一個整型陣列, 並進行初始化賦值9個資料 : int arr[] = {1,2,3,4,5,6,7,8,9}; int length = 0; // 計算陣列中資料長度 : // 所有資料的位元組數除以一個資料的位元組數即為資料的個數 : length = sizeof(arr) / sizeof(int); printf("陣列的長度為: %d\n",length); return 0; } |
執行結果 :
(2)上面的方法會出現一個誤區
那就是當陣列作為實參傳遞到另一個函式時, 而這個函式執行了上面同樣的方法, 結果出來的不會正確的陣列的長度 :
測試程式碼 :
#include<stdio.h> void test(int arr[]) { int length = 0; length = sizeof(arr) / sizeof(int); printf("test_陣列的總位元組數為: %d\n",sizeof(arr)); printf("test_陣列的長度為: %d\n",length); } int main() { // 定義一個整型陣列, 並進行初始化賦值9個資料 : int arr[] = {1,2,3,4,5,6,7,8,9}; int length = 0; // 計算陣列中資料長度 : // 所有資料的位元組數除以一個資料的位元組數即為資料的個數 : length = sizeof(arr) / sizeof(int); printf("main_陣列的長度為: %d\n",length); test(arr); return 0; } |
執行結果 :
程式碼分析 :
當將陣列作為實參傳遞到另一個函式中時, 另一個函式的形參相當於一個指標變量, 因為將陣列的名作為實參時, 就是將數字的首地址作為實參, 所以在test函式中輸出的sizeof(arr)其實得到的是一個整型陣列的長度(所佔的位元組數), 所以結果是8, 再用其除以int所佔的位元組數(4), 結果就是2 .
(這樣是得不到準確的陣列的長度的, 建議的操作是在定義陣列的函式中計算陣列的長度, 在以實參的形式傳遞出去, 這樣其他的函式變可以獲得陣列的長度)
相關文章
- c語言中計算陣列長度的方法C語言陣列
- c語言的strlen函式計算字元陣列長度不對C語言函式字元陣列
- C語言求其字元陣列的長度C語言字元陣列
- c語言獲取陣列長度的函式C語言陣列函式
- C語言獲得陣列長度的函式C語言陣列函式
- C語言應用於LR中-如何得到陣列長度C語言陣列
- C語言中如何求一個陣列的長度C語言陣列
- c語言的陣列C語言陣列
- C++陣列長度C++陣列
- C語言陣列C語言陣列
- c語言關於陣列的簡單運算C語言陣列
- C語言(字元陣列)C語言字元陣列
- C++獲取陣列的長度C++陣列
- 磁碟陣列可靠度的計算陣列
- [ASM C/C++] C語言陣列ASMC++C語言陣列
- C語言中,當計算字元陣列長度時,用sizeof 和strlen 的原理及兩者的區別C語言字元陣列
- Javascript如何改變陣列的長度?JavaScript陣列
- C語言 簡單的佇列(陣列佇列)C語言佇列陣列
- sizeof 和 strlen 計算陣列大小和長度詳解陣列
- C語言 指標與陣列C語言指標陣列
- c語言陣列、sizeof()及strlen()C語言陣列
- C語言基礎-1、陣列C語言陣列
- ARM彙編和C語言混合程式設計中陣列的陣列的操作C語言程式設計陣列
- 字元陣列的長度字元陣列
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- C語言程式設計基礎:指標陣列與陣列指標C語言程式設計指標陣列
- C語言中strlen求字串長度,求字元陣列長度(空字元,數字0,字元0,陣列部分初始化)C語言字串字元陣列
- realloc 實現隨使用者輸入自動擴充套件陣列長度(C語言)套件陣列C語言
- C語言陣列求學生成績C語言陣列
- c語言-運算子,陣列,指標C語言陣列指標
- C語言程式設計-長整數加法運算C語言程式設計
- c語言程式設計學習之二維陣列C語言程式設計陣列
- C語言動態陣列小作業C語言陣列
- C語言指標和陣列基礎C語言指標陣列
- C語言:陣列和指標的區別C語言陣列指標
- javascript如何獲取陣列的長度和遍歷陣列的每一項JavaScript陣列
- go 語言陣列Go陣列
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++