Obter o Tamanho do Array em C

Satishkumar Bharadwaj 12 outubro 2023
  1. O operador para determinar o tamanho de um array em C
  2. Obter Comprimento do Array em C
Obter o Tamanho do Array em C

Este tutorial introduz como determinar o comprimento de um array em C. O sizeof() é utilizado para obter o tamanho/comprimento de um array.

O operador para determinar o tamanho de um array em C

O sizeof() operador é um operador unário em tempo de compilação. É utilizado para calcular o tamanho do seu operando. Retorna o tamanho de uma variável. O operador sizeof() dá o tamanho na unidade de byte.

O operador sizeof() é utilizado para qualquer tipo de dados, tais como dados primitivos como int, float, char, e também dados não-primitivos como array, struct. Devolve a memória atribuída a esse tipo de dados.

A saída pode ser diferente em máquinas diferentes, como um sistema de 32 bits pode mostrar uma saída diferente e um sistema de 64 bits pode mostrar diferentes dos mesmos tipos de dados.

Sintaxe de sizeof():

sizeof(operand)
  • O operand é um tipo de dados ou qualquer operando.

O operador para tipos de dados primitivos em C

Este programa utiliza um int, float como um tipo de dados primitivo.

#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;
}

Resultado:

Size of char data type : 1 Size of int data type : 4 Size of float data
    type : 4 Size of double data type : 8

Obter Comprimento do Array em C

Se dividirmos o tamanho total do array pelo tamanho do elemento do array, obtemos o número de elementos do array. O programa é o que se segue:

#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;
}

Resultado:

Total elements the array can hold is: 16

Quando um array é passado como parâmetro para a função, ele é tratado como um ponteiro. O operador sizeof() devolve o tamanho do ponteiro em vez do tamanho do array. Portanto, dentro das funções, este método não funcionará. Em vez disso, passa um parâmetro adicional size_t size para indicar o número de elementos no array.

#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])));
}

Saída (num SO Linux de 64 bits):

sizeof of the array is : 28 sizeof of the parameter is : 8 Length of the array
    is : 7 Length of the parameter is : 2

Saída (num sistema operativo Windows de 32 bits):

sizeof of the array is : 28 sizeof of the parameter is : 4 Length of the array
    is : 7 Length of the parameter is : 1

Artigo relacionado - C Array