Shariath Dagon Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 Observem o código:int i[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int *j; j = i; //j = &i[0]; int size = ?Como faço para obter o tamanho do array utilizando j?Tentei algo do tipo:int size = sizeof (j) / sizeof (int);Mas parece que não é assim :(Alguém poderia me ajudar? Obrigado desde já! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 (editado) 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 Novembro 8, 2008 por Durub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Shariath Dagon Postado Novembro 8, 2008 Autor Denunciar Share Postado Novembro 8, 2008 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? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 8, 2008 Denunciar Share Postado Novembro 8, 2008 Sim, você terá que adicionar um outro parâmetro.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Novembro 10, 2008 Denunciar Share Postado Novembro 10, 2008 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?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Novembro 10, 2008 Denunciar Share Postado Novembro 10, 2008 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! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Shariath Dagon
Observem o código:
Como faço para obter o tamanho do array utilizando j?
Tentei algo do tipo:
int size = sizeof (j) / sizeof (int);
Mas parece que não é assim :(
Alguém poderia me ajudar? Obrigado desde já!
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
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.