如何在 C 語言中獲取陣列的大小
Satishkumar Bharadwaj
2023年1月30日
2020年11月24日
本教程介紹瞭如何在 C 語言中確定一個陣列的長度,sizeof()
運算子用於獲取一個陣列的大小/長度。
sizeof()
運算子在 C 語言中確定一個陣列的大小
sizeof()
運算子是一個編譯時的一元運算子。它用於計算運算元的大小。它返回變數的大小。sizeof()
運算子以位元組為單位給出大小。
sizeof()
運算子用於任何資料型別,如 int
、float
、char
等基元,也用於 array
、struct
等非基後設資料型別。它返回分配給該資料型別的記憶體。
The output may be different on different machines like a 32-bit system can show different output and a 64-bit system can show different of the same data types.
sizeof()
的語法
sizeof(operand)
operand
是一個資料型別或任何運算元。
sizeof()
在 C 語言中用於原始資料型別的運算元
該程式使用 int
、float
作為原始資料型別。
#include <stdio.h>
int main(void)
{
printf("Size of char data type: %u\n",sizeof(char));
printf("Size of int data type: %u\n",sizeof(int));
printf("Size of float data type: %u\n",sizeof(float));
printf("Size of double data type: %u\n",sizeof(double));
return 0;
}
輸出:
Size of char data type: 1
Size of int data type: 4
Size of float data type: 4
Size of double data type: 8
用 C 語言獲取陣列的長度
如果我們用陣列的總大小除以陣列元素的大小,就可以得到陣列中的元素數。程式如下。
#include<stdio.h>
int main(void)
{
int number[16];
size_t n = sizeof(number)/sizeof(number[0]);
printf("Total elements the array can hold is: %d\n",n);
return 0;
}
輸出:
Total elements the array can hold is: 16
當一個陣列作為引數被傳送到函式中時,它將被視為一個指標。sizeof()
運算子返回的是指標大小而不是陣列大小。所以在函式內部,這個方法不能用。相反,傳遞一個額外的引數 size_t size
來表示陣列中的元素數量。
#include<stdio.h>
#include<stdlib.h>
void printSizeOfIntArray(int intArray[]);
void printLengthIntArray(int intArray[]);
int main(int argc, char* argv[])
{
int integerArray[] = { 0, 1, 2, 3, 4, 5, 6 };
printf("sizeof of the array is: %d\n", (int) sizeof(integerArray));
printSizeOfIntArray(integerArray);
printf("Length of the array is: %d\n", (int)( sizeof(integerArray) / sizeof(integerArray[0]) ));
printLengthIntArray(integerArray);
}
void printSizeOfIntArray(int intArray[])
{
printf("sizeof of the parameter is: %d\n", (int) sizeof(intArray));
}
void printLengthIntArray(int intArray[])
{
printf("Length of the parameter is: %d\n", (int)( sizeof(intArray) / sizeof(intArray[0]) ));
}
輸出(在 64 位的 Linux 作業系統中):
sizeof of the array is: 28
sizeof of the parameter is: 8
Length of the array is: 7
Length of the parameter is: 2
輸出(在 32 位 Windows 作業系統中):
sizeof of the array is: 28
sizeof of the parameter is: 4
Length of the array is: 7
Length of the parameter is: 1