Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

crazygod

[Duvida] Array + Apontadores

Mensagens Recomendadas

crazygod

Boas pessoal, ca estou eu para vos chatear mais um bocadinho com as minhas duvidas de noob :D

tava eu muito contente a estudar programação, quando derepente, fiquei com uma duvida e não consegui esclarecer...

a intenção do seguinte codigo é mostrar o tamanho do array.

no array de (char), não tenho dificuldades, mas no array (int) é que ja é pior...

#include <iostream>
using namespace std;

int main(){
    char cletras[]="ola eu sou um teste";
    char* pletras= cletras;
    cout << "Array -> " << sizeof(cletras) << endl;
    cout << "Apontador -> " << sizeof(pletras) << endl;
    for(int i=0; i<sizeof(cletras)-1; i++)
            cout << cletras[i];
    cout << endl;

    int inum[]={13,14,15,16,25};
    int* pnum= inum;
    cout << "Array -> " << sizeof(inum) << endl;
    cout << "Apontador -> " << sizeof(pnum) << endl;
    for (int i=0; i<sizeof(pnum)-1; i++)
        cout << pnum[i] << ' ';
    cout << endl;    
    
    system("pause");
    return 0;
}

se me disserem como faço para saber o tamanho do array int agradecia.

e ja agora o apontador que eu tenho para char, diz me é o espaço ocupado pela string, certo??

Obrigado

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
TheDark

O operador sizeof devolve o tamanho em bytes do que lhe passares como argumento. Provavelmente, sizeof(inum) está a devolver 20, porque 5 ints * 4 bytes (tamanho ocupado por um inteiro) = 20.

Para saberes o número de elementos do array, divides sizeof(inum) por sizeof(int).

Não percebi a última pergunta. Se pedires o tamanho do apontador, vai dar-te sempre 4, seja qual for o tipo apontado, e seja qual for o objecto apontado. Um apontador tem sempre 4 bytes em arquitecturas de 32 bit.


Desaparecido.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
crazygod

Obrigado pela resposta tão rapida, agora quando chegar a casa vou analisar isso melhor, mas acho que já percebi

Obrigado

edit:

já testei...Muito Obrigado

ficou assim:

#include <iostream>
using namespace std;

int main(){
    char cletras[]="ola eu sou um teste";
    char* pletras= cletras;
    cout << "Array -> " << sizeof(cletras) << endl;
    cout << "Apontador -> " << sizeof(pletras) << endl;
    for(int i=0; i<sizeof(cletras)-1; i++)
            cout << cletras[i];
    cout << endl;

    int inum[]={13,14,15,16,25,30,40,50};
    int* pnum= inum;
    cout << "Array -> " << sizeof(inum)/sizeof(int) << endl;
    cout << "Apontador -> " << sizeof(pnum) << endl;
    for (int i=0; i<sizeof(inum)/sizeof(int); i++)
        cout << inum[i] << ' ';
    cout << endl;    
    
    system("pause");
    return 0;
}
[\code]

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.