Dark Skyllen 7 #1 Postado 15 Abril, 2010 Aula 7 pt 2 Usando ponteiros Ponteiros para ponteiros Uma variavel ponteiro pode apontar para qualquer tipo de variavel, ou seja, como ponteiros são um tipo de variável, podemos apontar para eles. #include <iostream.h> int main(void) { int var = 10; int* pVar = &var; int** ppVar = &pVar; cout << &var << endl << pVar << endl << ppVar << endl; system("pause"); return 0; } Se fizer isso verá que pVar aponta para o endereço de var e que ppVar aponta para o endereço de pVar. Agora modifique o programa da seguinte forma: cout << &var << endl << pVar << endl << *ppVar << endl; Verá que pVar e ppVar estão apontado para o endereço de var. E assim sucessivamente. Com isso se alterarmos algum valor em *ppVar alterara também em pVar e em var. Ponteiros para Structs: Como em structs temos diferentes tipos de dados de diferentes nomes, temos de acessá-los separadamente usando um ponto. Ex: jose.nome = 10; Quando usamos um ponteiro para struc usamos o simbolo (aponta-para) ->: #include <iostream.h>using namespace std;struct cliente{ string nome; int saldo; };void alteraNome(cliente*);void exibeCliente(cliente*);int main(void){ cliente guilherme = {"Guilherme", 145}; exibeCliente(&guilherme); alteraNome(&guilherme); exibeCliente(&guilherme); system("pause");}void alteraNome(cliente* Cliente){ Cliente->nome = "Alterado via ponteiros";}void exibeCliente(cliente* Cliente){ cout << "Nome do cliente: " << Cliente->nome << endl << "Saldo do cliente: " << Cliente->saldo << endl;} Isso resolve o problema da aulas de structs onde não conseguiámos alterar o um valor do membro struct. Com o ponteiro, passamos o endereço de memória e ele altera diretamente no endereço de memória! OiaeuMae Essa aula foi simples, mas só foi pra explicar mais alguns conceitos de ponteiros! Até a próxima aula, Dark Skyllen Compartilhar este post Link para o post Compartilhar em outros sites
esau 0 #2 Postado 15 Abril, 2010 Embora as aulas sejam simples, me ajudou um pouco. otima aula kra, não bastava so um thanks pra agradecer ;p Ainda tem mais aulas? Compartilhar este post Link para o post Compartilhar em outros sites
Dark Skyllen 7 #3 Postado 15 Abril, 2010 Embora as aulas sejam simples, me ajudou um pouco. otima aula kra, não bastava so um thanks pra agradecer ;p Ainda tem mais aulas? Sim, são simples. Na verdade essa aula ficou muito curta mesma, porquê, na verdade, eu queria fazer uma aula mais complexa na parte 2, o que não ocorreu. Depois lembrei que precisava passar matrizes e vetores pra isso. Sim, tem mais aulas. Compartilhar este post Link para o post Compartilhar em outros sites
Raweng 0 #4 Postado 16 Abril, 2010 Uma variavel ponteiro pode apontar para qualquer tipo de variavel, ou seja, como ponteiros são um tipo de variável, podemos apontar para eles. como assim mano Compartilhar este post Link para o post Compartilhar em outros sites
Dark Skyllen 7 #5 Postado 17 Abril, 2010 como assim mano A variável ponteiroA aponta para a ponteiroB e ponteiroB aponta para uma variavel qualquer, ou seja, ambas apontam para o mesmo endereço. Complicadinho né? :coolface: Compartilhar este post Link para o post Compartilhar em outros sites
dragonlorde 0 #6 Postado 18 Abril, 2010 Esse ponteiro em struct funcionaria que nem algo assim de lua: local cliente = {['cliente']='Dark Skyllen',['saldo']=10} print('Nome do cliente: '..cliente.cliente..'\nSaldo do cliente: '..cliente.saldo) Eu imagino que é mesma coisa... Alias o struct é 1 vetor ou não? Compartilhar este post Link para o post Compartilhar em outros sites
Dark Skyllen 7 #7 Postado 18 Abril, 2010 Esse ponteiro em struct funcionaria que nem algo assim de lua: local cliente = {['cliente']='Dark Skyllen',['saldo']=10} print('Nome do cliente: '..cliente.cliente..'\nSaldo do cliente: '..cliente.saldo) Eu imagino que é mesma coisa... Alias o struct é 1 vetor ou não? Sim, são uma espécie de vetores que podem agrupar dados de diferentes tipos. Compartilhar este post Link para o post Compartilhar em outros sites
dragonlorde 0 #8 Postado 19 Abril, 2010 Eu so entendi ponteiros quando voce falou do struct... Obrigado pelas suas aulas Compartilhar este post Link para o post Compartilhar em outros sites
Lhg 0 #9 Postado 2 Novembro, 2010 Olá, qual seria a diferença destas formas de declarações: int* ponteiro1; int *ponteiro2; outra coisa, já vi em muitos códigos a seguinte situação if (( (AtribArq->dwFileAttributes == FILE_ATTRIBUTE_ARCHIVE) O que estaria acontecendo neste conceito de "->" Compartilhar este post Link para o post Compartilhar em outros sites