Ir para conteúdo
Fórum Script Brasil
  • 0

Obtendo o tamanho de um array


Shariath Dagon

Pergunta

5 respostass a esta questão

Posts Recomendados

  • 0

Não há como você saber o tamanho do array de um pointer, a não ser que você utilize um caractere de controle mais uma função que conta quantos elementos tem. Como o strlen utilizando o 0, por exemplo.

Mas por quê não dá para utilizar sizeof em um pointer?

O sizeof é do pré-processador do C, então ele somente substitui o sizeof(var) pelo tamanho dela.

Abraços.

Editado por Durub
Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado pela resposta!

Considerando o seguinte método:

Galaxy(string Name, string Description, Planet Planets[]);
Eu preciso criar um outro array dentro desta função do mesmo tamanho que Planets[]. Eu li no livro "C Completo e Total" do Herbert Schildt que todas as seguintes declarações são semelhantes:
Galaxy(string Name, string Description, Planet Planets[]);
Galaxy(string Name, string Description, Planet *Planets);
Galaxy(string Name, string Description, Planet Planets[100]);

Entretanto eu não posso utilizar a última, pois eu não sei qual o número de planetas que usuário da API vai passar pelo array.

É válido usar sizeof (Planets[])? E se não for possível, terei de adicionar outro parâmetro que informe o tamanho do array?

Link para o comentário
Compartilhar em outros sites

  • 0
O sizeof é do pré-processador do C, então ele somente substitui o sizeof(var) pelo tamanho dela.

interessante, sabe dizer se com constantes e enum é assim tb??

o compilador tb substitui a constante pelo valor dela na hora de compilar, o a constante é mesmo declarada e ocupa espaco na memoria em tempo de execucao??

Link para o comentário
Compartilhar em outros sites

  • 0

Sim. Constantes são aplicadas no período da compilação (mais precisamente, antes..).

#include <stdio.h>

#define true 1
#define false 0

int main(void) {
    int x = true;

    if(x == false)
        return 1;

    return 0;
}
Vai se transformar em:
..
int x = 1;

if(x == 0)
...

E então o programa será compilado.

Agora sobre os enum, infelizmente não sei responder.

Abraços!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...