jayanson Postado Dezembro 2, 2011 Denunciar Share Postado Dezembro 2, 2011 Boa tarde galera estou com dificuldade para fazer um exercicio em c mas ate agora so quebrei a cabeça. alguém pode me ajudar ?segue o que pedeDeclare vetores de inteiro, char, float, double, long int com 5 posições, da seguinte forma: int v[5] = {2,5,1,4,0}; char c[5] = {‘a’,’b’,’m’, ‘4’,’-‘}; float v[5] = {2.66, 0.125, 1.0, 4.99, 2.009}; Usando a função printf, com o argumento “%p”, e com vetores apontando para cada um dos tipos de dados, descubra quantos bytes é alocado pelo seu compilador a cada tipo de dados. Não se esqueça que para um vetor apontar para um vetor de float, ele deve ser do tipo float. Como se sabe que em um vetor as posições são contínuas, se for impresso o endereço de duas posições, pela diferença entre os dois endereços pode-se descobrir quantos bytes são alocados. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Dezembro 2, 2011 Denunciar Share Postado Dezembro 2, 2011 Basicamente, percorra cada vetor e dê um printf com o argumento %p. O %p imprime o endereço da variável na memória (em hexadecimal).Exemplo considerando vetores de 5 posições:for(i=0;i<5;i++) printf("%p ", v[i]); Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 jayanson Postado Dezembro 2, 2011 Autor Denunciar Share Postado Dezembro 2, 2011 fiz assim mas não deu certo pode verificar por favor ?#include <stdio.h>#include <stdlib.h> main () { int a[5]={2,5,1,4,0}; char b[5]={'a','b','m','4','-'}; float c[5]={2.66,0.125,1.0,4.99,2.009}; double d[5]={1.0e6,256000.45672,23e10,10000000.99999,123456.123456}; long int e[5]={123456789,999999999,22222222,11111111,987654321}; int x; printf("A quntidade de bytes alocados para: \n"); printf("int a : %p-%p",&a[4]-&a[0]); printf("\n \n"); printf("char b : %p %p",&b[4]-&b[0]); printf("\n \n"); printf("float c : %p %p",&c[4]-&c[0]); printf("\n \n"); printf("double d : %p %p",&d[4]-&d[0]); printf("\n \n"); printf("long int e : %p %p",&e[4]-&e[0]); printf("\n"); printf("%p",&a[0]); system("pause"); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Dan Oliveira Postado Dezembro 2, 2011 Denunciar Share Postado Dezembro 2, 2011 (editado) Acho que seria esse o programa, mas não te daria a quantidade de bytes alocados como disse o amigo;#include <stdio.h> main () { int a[5]={2,5,1,4,0}; char b[5]={'a','b','m','4','-'}; float c[5]={2.66,0.125,1.0,4.99,2.009}; double d[5]={1.0e6,256000.45672,23e10,10000000.99999,123456.123456}; long int e[5]={123456789,999999999,22222222,11111111,987654321}; int i; printf("A quantidade de bytes alocados para: \n\n"); for(i=0; i<5;i++) { printf("Vetor int a[%d]:%14p\n", i ,a[i]); printf("Vetor char b[%d]:%13p\n", i , b[i]); printf("Vetor float c[%d]: %11p\n", i , c[i]); printf("Vetor double d[%d]: %10p\n", i , d[i]); printf("Vetor long int e[%d]: %p\n\n", i , e[i]); } getchar(); return 0; } Editado Dezembro 2, 2011 por Dan Oliveira Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 mJi Postado Dezembro 2, 2011 Denunciar Share Postado Dezembro 2, 2011 É melhor fazer um for para cada tipo. Facilita para visualizar a disposição dos endereços de memória.Mas é isso ae que o Dan postou. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
jayanson
Boa tarde galera estou com dificuldade para fazer um exercicio em c mas ate agora so quebrei a cabeça. alguém pode me ajudar ?
segue o que pede
Declare vetores de inteiro, char, float, double, long int com 5 posições, da seguinte forma:
int v[5] = {2,5,1,4,0};
char c[5] = {‘a’,’b’,’m’, ‘4’,’-‘};
float v[5] = {2.66, 0.125, 1.0, 4.99, 2.009};
Usando a função printf, com o argumento “%p”, e com vetores apontando para cada um dos tipos de
dados, descubra quantos bytes é alocado pelo seu compilador a cada tipo de dados. Não se esqueça que
para um vetor apontar para um vetor de float, ele deve ser do tipo float. Como se sabe que em um vetor
as posições são contínuas, se for impresso o endereço de duas posições, pela diferença entre os dois
endereços pode-se descobrir quantos bytes são alocados.
Link para o comentário
Compartilhar em outros sites
4 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.