如何在 C 語言中獲取陣列的大小

Satishkumar Bharadwaj 2023年1月30日 2020年11月24日
  1. sizeof() 運算子在 C 語言中確定一個陣列的大小
  2. 用 C 語言獲取陣列的長度
如何在 C 語言中獲取陣列的大小

本教程介紹瞭如何在 C 語言中確定一個陣列的長度,sizeof() 運算子用於獲取一個陣列的大小/長度。

sizeof() 運算子在 C 語言中確定一個陣列的大小

sizeof() 運算子是一個編譯時的一元運算子。它用於計算運算元的大小。它返回變數的大小。sizeof() 運算子以位元組為單位給出大小。

sizeof() 運算子用於任何資料型別,如 intfloatchar 等基元,也用於 arraystruct 等非基後設資料型別。它返回分配給該資料型別的記憶體。

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 語言中用於原始資料型別的運算元

該程式使用 intfloat 作為原始資料型別。

#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

相關文章 - C Array