Ir ao conteúdo
  • Cadastre-se

Variáveis no c


Visitante

Posts recomendados

  • Membro VIP

Faz tempo que não uso o C. Uso mais pascal, mas pelo que me lembro é igual nesse caso.

você usa o operador sizeof. Assim:

a = sizeof(int) , irá retornar o tamanho de uma variável int.

em vez de int você pode pegar o tamanho de uma variável qualquer que você não sabe o tipo ( sizeof(aa)).

Mais complicado é quando você vai pegar o tamanho de um vetor. Ele não mostra o tamanho total do vetor e sim sobre o tipo do vetor. Se você tem um vetor de inteiros ele irá retornar apenas o tamanho de um inteiro. Para saber o tamanho total do vetor (ou melhor, a quantidade de memória que ele ocupa) é só multiplicar pelo tamanho do vetor.

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por sledgehammer@05 Jul. 2002, 22:51

Mais complicado é quando você vai pegar o tamanho de um vetor. Ele não mostra o tamanho total do vetor e sim sobre o tipo do vetor. Se você tem um vetor de inteiros ele irá retornar apenas o tamanho de um inteiro. Para saber o tamanho total do vetor (ou melhor, a quantidade de memória que ele ocupa) é só multiplicar pelo tamanho do vetor.

Isso é um engano. No C, o operador sizeof mostra o tamanho do tipo (quando usado um tipo como parâmetro; sizeof(int) ) ou o tamanho que determinada variável ocupará na memória.

Se fizer isso:

char vetor[50];

printf("Tamanho do vetor: %d\n", sizeof(vetor));

Imprimirá "50" (assumindo que char tem tamanho 1).

Link para o comentário
Compartilhar em outros sites

  • Membro VIP
Postado Originalmente por DanielKO@06 Jul. 2002, 01:52

Isso é um engano. No C, o operador sizeof mostra o tamanho do tipo (quando usado um tipo como parâmetro; sizeof(int) ) ou o tamanho que determinada variável ocupará na memória.

Se fizer isso:

char vetor[50];

printf("Tamanho do vetor: %d\n", sizeof(vetor));

Imprimirá "50" (assumindo que char tem tamanho 1).

Ué? E o que eu disse?

ex:

int vetor[50];

a=sizeof(vetor)

Ele retornará que a=4. No pascal é o mesmo.

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por sledgehammer@06 Jul. 2002, 03:55

Ué? E o que eu disse?

ex:

int vetor[50];

a=sizeof(vetor)

Ele retornará que a=4. No pascal é o mesmo.

Não. Se cada int tem 4 bytes de tamanho, no seu código a variável a conterá o valor 200, que é o tamanho do vetor na memória.

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Tá certo então. Escrevi bobagem mesmo.

Estava com um resultado de ponteiros na cabeça e falei bobagem. É que é apenas um endereço de memória e ocupa 4 bytes apenas.

O que estava pensando era o seguinte (em pascal), ai afirmei errado:

type Tarray=array[1..10] of Integer;

...

   a: Tarray;

   b: ^Tarray;

Sizeof(a) => 40

Sizeof(B) => 4

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...