//Programa que imprime a memória utilizada por tipos de dados#include<stdio.h>void rotina (char texto[6]){int tamanho =sizeof(texto);
printf ("%s:\n",texto);
printf ("Tamanho em bytes: %i\n\n",tamanho);}void main (void){
rotina ("char");
rotina ("int");
rotina ("float");}
Boa tarde,
Estou querendo fazer um programa que imprima a quantidade de memória em bytes que cada tipo de dados ocupa (porque em máquinas diferentes os valores podem ser diferentes).
Inicialmente escrevi o código apenas com a função main, repetindo o printf para cada tipo de dado, da seguinte forma:
...
printf ("Tamanho em bytes: %i \n", sizeof (char);
printf ("Tamanho em bytes: %i \n", sizeof (int);
...
Deu certo,
Porém depois decidi tentar usar uma outra função para não precisar repetir o printf e fiz da maneira em que coloquei o código aqui.
O retorno que o programa está dando é sempre 4 bytes, ou seja, o tamanho de char texto[6].
Já percebi que o problema é que em sizeof (texto) o valor que está sendo devolvido é o tamanho da variável texto,
mas gostaria que no lugar de texto fosse inserido o conteúdo da variável, ou seja, as strings "char", "int" , "float" , para que fosse retornado o tamanho de cada tipo de dado respectivo.
Tentei escrever no lugar de sizeof (texto) assim:
sizeof ("%s",texto);
Porém não deu certo.
Gostaria de saber se existe alguma maneira de que no parâmetro de sizeof fosse inserido o conteúdo da variável (string) e não a própria variável.
Pergunta
Eric MGS
Boa tarde,
Estou querendo fazer um programa que imprima a quantidade de memória em bytes que cada tipo de dados ocupa (porque em máquinas diferentes os valores podem ser diferentes).
Inicialmente escrevi o código apenas com a função main, repetindo o printf para cada tipo de dado, da seguinte forma:
...
printf ("Tamanho em bytes: %i \n", sizeof (char);
printf ("Tamanho em bytes: %i \n", sizeof (int);
...
Deu certo,
Porém depois decidi tentar usar uma outra função para não precisar repetir o printf e fiz da maneira em que coloquei o código aqui.
O retorno que o programa está dando é sempre 4 bytes, ou seja, o tamanho de char texto[6].
Já percebi que o problema é que em sizeof (texto) o valor que está sendo devolvido é o tamanho da variável texto,
mas gostaria que no lugar de texto fosse inserido o conteúdo da variável, ou seja, as strings "char", "int" , "float" , para que fosse retornado o tamanho de cada tipo de dado respectivo.
Tentei escrever no lugar de sizeof (texto) assim:
sizeof ("%s",texto);
Porém não deu certo.
Gostaria de saber se existe alguma maneira de que no parâmetro de sizeof fosse inserido o conteúdo da variável (string) e não a própria variável.
Agradeço se alguém souber responder.
Link para o comentário
Compartilhar em outros sites
13 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.