CITH 4 Denunciar post Postado Janeiro 23, 2015 Minha dúvida é simples.Gostaria se saber se existe alguma função pré-definida que me retorne o tamanho de um vetor.Agradeço desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Mnemønic 0 Denunciar post Postado Janeiro 24, 2015 Depende da implementação desse vetor. Se for apenas um array simples em C, não. Se for algum container em C++, sim. Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Janeiro 25, 2015 Em C, para arrays de char, pode utilizar a função strlen. Para outros tipos de arrays, pode utilizar o operador sizeof para calcular o tamanho. strlen: http://www.cplusplus.com/reference/cstring/strlen/?kw=strlen sizeof: http://www.cplusplus.com/forum/beginner/44048/ http://www.slackbr.org/forum/viewtopic.php?f=43&t=5649 Em C++, como o Mnemonic mencionou, os containers possuem métodos para obter o seu tamanho Exemplo: http://www.cplusplus.com/reference/vector/vector/size/ http://www.cplusplus.com/reference/list/list/size/ Obs.: Ao Mnemonic, quando se propor a ajudar alguém em suas respostas procure mostrar a pessoa como fazê-lo ou indicar alguma fonte. Simplesmente dizer que existe e não indicar como, gera respostas que não contribuem com o tópico. Compartilhar este post Link para o post Compartilhar em outros sites
CITH 4 Denunciar post Postado Janeiro 26, 2015 Em C, para arrays de char, pode utilizar a função strlen. Para outros tipos de arrays, pode utilizar o operador sizeof para calcular o tamanho. strlen: http://www.cplusplus.com/reference/cstring/strlen/?kw=strlen sizeof: http://www.cplusplus.com/forum/beginner/44048/ http://www.slackbr.org/forum/viewtopic.php?f=43&t=5649 Em C++, como o Mnemonic mencionou, os containers possuem métodos para obter o seu tamanho Exemplo: http://www.cplusplus.com/reference/vector/vector/size/ http://www.cplusplus.com/reference/list/list/size/ Obs.: Ao Mnemonic, quando se propor a ajudar alguém em suas respostas procure mostrar a pessoa como fazê-lo ou indicar alguma fonte. Simplesmente dizer que existe e não indicar como, gera respostas que não contribuem com o tópico. Olá GBecker. Eu estou utilizando C. Tentei utilizar o sizeof mas não deu certo, pois estou querendo passar o vetor pra uma função e ela me retornar o tamanho dele. Olha só #include <stdio.h> int main() { int Vetor[6]; printf("%d",Test(Vetor)); } int Test( int *Vetor[] ) { return sizeof(*Vetor); } Em vez de ele me retornar 24( 6 * 4 ), ele me retorna apenas 4. Acho que ele tá me retornando apenas a quantidade de byte de de 1 elemento do vetor. Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Janeiro 26, 2015 Isto se deve a dois fatos: 1. Em C, só é possível passar argumentos por valor, e nunca por referência; 2. Em C, o valor de um vetor é um ponteiro para seu primeiro elemento. No código que você escreveu, a função Test espera um ponteiro para ponteiro para int. Portanto sizeof *Vetor é sinônimo de sizeof (int *), que na sua implementação é igual a 4. Em C, se uma função precisa saber o tamanho de um vetor, é comum usar um parâmetro adicional. Afinal, sempre é possível saber o tamanho de qualquer vetor (se o tamanho for constante, você sabe quando escreve o código; se não for, como é o caso de VLAs, você tem o valor em uma variável, ou outro lvalue qualquer). Compartilhar este post Link para o post Compartilhar em outros sites
CITH 4 Denunciar post Postado Janeiro 26, 2015 Isto se deve a dois fatos: 1. Em C, só é possível passar argumentos por valor, e nunca por referência; 2. Em C, o valor de um vetor é um ponteiro para seu primeiro elemento. No código que você escreveu, a função Test espera um ponteiro para ponteiro para int. Portanto sizeof *Vetor é sinônimo de sizeof (int *), que na sua implementação é igual a 4. Em C, se uma função precisa saber o tamanho de um vetor, é comum usar um parâmetro adicional. Afinal, sempre é possível saber o tamanho de qualquer vetor (se o tamanho for constante, você sabe quando escreve o código; se não for, como é o caso de VLAs, você tem o valor em uma variável, ou outro lvalue qualquer). Obrigado por me esclarecer. Eu já fazia assim como você falou, colocava outro parâmetro pra mandar o tamanho do vetor, mas estava com a dúvida já resolvida. xD Compartilhar este post Link para o post Compartilhar em outros sites