Dark Skyllen 7 #1 Posted April 15, 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 Share this post Link to post Share on other sites
esau 0 #2 Posted April 15, 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? Share this post Link to post Share on other sites
Dark Skyllen 7 #3 Posted April 15, 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. Share this post Link to post Share on other sites
Raweng 0 #4 Posted April 16, 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 Share this post Link to post Share on other sites
Dark Skyllen 7 #5 Posted April 17, 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: Share this post Link to post Share on other sites
dragonlorde 0 #6 Posted April 18, 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? Share this post Link to post Share on other sites
Dark Skyllen 7 #7 Posted April 18, 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. Share this post Link to post Share on other sites
dragonlorde 0 #8 Posted April 19, 2010 Eu so entendi ponteiros quando voce falou do struct... Obrigado pelas suas aulas Share this post Link to post Share on other sites
Lhg 0 #9 Posted November 2, 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 "->" Share this post Link to post Share on other sites