Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
crazygod

[Duvida] Array + Apontadores

Recommended Posts

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

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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]

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.