Obter o Tamanho do Array em C

  1. O operador para determinar o tamanho de um array em C
  2. Obter Comprimento 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

  • Imprimir Char Array em C
  • Inicializar um Array a 0 em C