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語言關於陣列的簡單運算C語言陣列
- C++陣列長度C++陣列
- c語言字元陣列C語言字元陣列
- C++獲取陣列的長度C++陣列
- ARM彙編和C語言混合程式設計中陣列的陣列的操作C語言程式設計陣列
- C語言基礎-1、陣列C語言陣列
- C語言 指標與陣列C語言指標陣列
- Javascript如何改變陣列的長度?JavaScript陣列
- sizeof 和 strlen 計算陣列大小和長度詳解陣列
- c語言-運算子,陣列,指標C語言陣列指標
- C語言陣列求學生成績C語言陣列
- 獲取C/C++字串、字元陣列長度C++字串字元陣列
- 實驗4 c語言陣列應用程式設計C語言陣列程式設計
- c語言程式設計學習之二維陣列C語言程式設計陣列
- 字元陣列的長度字元陣列
- realloc 實現隨使用者輸入自動擴充套件陣列長度(C語言)套件陣列C語言
- C語言程式設計-長整數加法運算C語言程式設計
- C語言動態陣列小作業C語言陣列
- 實驗4_C語言陣列應用程式設計C語言陣列程式設計
- (C語言)使用指標列印陣列的內容C語言指標陣列
- go 語言陣列Go陣列
- C語言陣列實現三子棋C語言陣列
- C語言指標和陣列筆試題C語言指標陣列筆試
- C語言 二維陣列課題程式碼C語言陣列
- 39.C語言陣列學習的有關整理C語言陣列
- C語言:迴文數計算C語言
- C語言/C++程式設計學習:棧的程式碼實現之陣列方案C語言C++程式設計陣列
- numpy——陣列的計算陣列
- Java 定義長度為 0 的陣列 / 空陣列Java陣列
- C語言多維陣列本質技術推演C語言陣列
- Go 語言是如何計算 len() 的?Go
- 基於陣列的學生管理系統【C語言版】陣列C語言
- C語言程式設計-漢字點陣C語言程式設計