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

Satishkumar Bharadwaj 2023年10月12日
  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