Os arrays são uma das formas de armazenamento de dados mais freqüentemente usadas durante a operação do programa. Eles permitem que você organize elementos do mesmo tipo em uma sequência ordenada e obtenha acesso rápido a eles por índice. Muitas vezes, ao desenvolver aplicativos em linguagens de programação poderosas e flexíveis que permitem acesso direto à memória, como C ++, você precisa determinar o tamanho do array.
Necessário
Compilador C ++
Instruções
Passo 1
Determine o tamanho da matriz em tempo de compilação, calculando-o com o operador sizeof. Este operador retorna a quantidade de memória (em bytes) ocupada pelo argumento passado a ele. O argumento pode ser uma variável ou um identificador de tipo. O operador sizeof retorna a quantidade finita de memória ocupada pelo objeto na fase de execução do programa (levando em consideração, por exemplo, as configurações para o alinhamento dos campos da estrutura), mas seu cálculo é realizado na fase de compilação.
Passo 2
Para determinar o tamanho de uma matriz usando o operador sizeof, divida todo o seu tamanho pelo tamanho de um elemento. Por exemplo, se você tiver a seguinte definição de matriz: int aTemp = {10, 20, 0xFFFF, -1, 16}, seu tamanho pode ser calculado como: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
etapa 3
Para um uso mais conveniente deste método, faz sentido definir uma macro: #define countof (a) (sizeof (a) / sizeof (a [0])) Observe que, como o valor do operador sizeof é calculado na compilação vez, no ponto em que o cálculo é realizado, as informações sobre o volume do array e seus elementos devem estar disponíveis de forma explícita. Em outras palavras, é impossível determinar os parâmetros de um array de tamanho desconhecido por sua declaração externa.
Passo 4
Determine o tamanho do array durante a execução do programa, usando o sinal conhecido de seu término. Uma das abordagens que permite armazenar e transmitir dados na forma de matrizes de comprimento indefinido é alocar um valor especial para um sinal que indica a conclusão de uma sequência de dados. Por exemplo, strings de estilo C de byte único que são matrizes de caracteres devem terminar com um valor 0, matrizes de strings C compactadas de comprimento variável são terminadas em zero e as matrizes de ponteiro devem ser terminadas em nulo.
Etapa 5
Para determinar o tamanho de um array representado desta forma, faça a varredura elemento por elemento até encontrar o elemento final. Aumente o contador inicializado com zero durante a varredura. Ou, aumente o valor do ponteiro para um elemento da matriz e, após a varredura, calcule a diferença entre os ponteiros para o elemento atual e o primeiro.
Etapa 6
Obtenha o tamanho de uma matriz dinâmica representada por uma estrutura ou objeto de biblioteca chamando seu método. Todas as classes que encapsulam a funcionalidade de tais matrizes possuem métodos para obter o número atual de elementos. Por exemplo, a classe de modelo std:: vector da biblioteca padrão C ++ tem um método de tamanho, a classe QVector da estrutura Qt tem um método de contagem e a classe CArray análoga do MFC tem um método GetCount.