Gurzi Posted April 20, 2006 at 01:53 PM Report #23094 Posted April 20, 2006 at 01:53 PM Master's em C, ninguem se disponibiliza para fazer um tutorial oficial (linguagem newbie, para que os mais recentes possam entender) de pointers (ponteiros) ? Até agora estou a dar me bem com a explicação do Livro do Luis Damas mas queria mais ajuda 🙂 se alguem se disponibilizar , agradecia e até podia ser um artigo oficial da revista p@p 😁 Um abraço , Gurzi
JoBlack Posted April 20, 2006 at 08:00 PM Report #23195 Posted April 20, 2006 at 08:00 PM Sim, era mto útil para todos os que estamos a iniciar-nos em C...
Gurzi Posted April 20, 2006 at 08:21 PM Author Report #23203 Posted April 20, 2006 at 08:21 PM prometo que vou fazer um big tutorial sobre isto, deixem-me só acabar de analizar isto 😛 mas se algum master quiser, dava mais jeito 😛
vbmaster Posted April 20, 2006 at 08:29 PM Report #23208 Posted April 20, 2006 at 08:29 PM Só sei pointers em c++
Gurzi Posted April 20, 2006 at 09:04 PM Author Report #23227 Posted April 20, 2006 at 09:04 PM deve ser a mesma coisa suponho 😛
saramgsilva Posted April 20, 2006 at 09:05 PM Report #23229 Posted April 20, 2006 at 09:05 PM Só sei pointers em c++ existem algumas diferenças!! em C ponteiros é mto usado e em C++ ja nem tanto... acho que ainda nao coloquei aqui este....se for repetido nao faz mal...o que interessa é ser util : http://www.di.ufpb.br/liliane/aulas/index_ED.htmll http://www.ime.usp.br/~pf/algoritmos/ wwwp.fc.unesp.br/~erich/ed.html gostei mto de os ler!! 😛 vejam sao mto bom tutis... talvez mais direccionado para TAD's, mas tb tem ponteiros... www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
Gurzi Posted April 20, 2006 at 09:39 PM Author Report #23248 Posted April 20, 2006 at 09:39 PM ainda ei de fazer eu tutoriais para o p@p sobre isto, dont worryy 😛 tofas depois como tu és expert nisto avalias o meu work 😛
saramgsilva Posted April 21, 2006 at 12:51 AM Report #23282 Posted April 21, 2006 at 12:51 AM ainda ei de fazer eu tutoriais para o p@p sobre isto, dont worryy 😛 tofas depois como tu és expert nisto avalias o meu work 😛 já esqueci 1 pouco isso por isso nao fiz nada para voces.... ta, mas peço que vejas mais coisas para alem do livro do luis damas, pq acham que no livro nao explicam bem :dontgetit: bom trabalho 😛 www.saramgsilva.com As minhas apps no WP7 Marketplace Youtube : Galinho - Windows Phone 7.5
brink@ero Posted April 21, 2006 at 08:54 AM Report #23311 Posted April 21, 2006 at 08:54 AM existem algumas diferenças!! em C ponteiros é mto usado e em C++ ja nem tanto... Os ponteiros usados em C, tambem são usados em C++ de igual modo. Mas em C++ existe algo requintado que em C não podes fazer e que substitui os ponteiros de C. Que é a passagem por referência com o operador &
ouvi_dizer Posted April 21, 2006 at 09:08 AM Report #23315 Posted April 21, 2006 at 09:08 AM Em C também. Pointeiros são iguais em tudo o que é linguagem C (C# de C só tem o nome.).
brink@ero Posted April 21, 2006 at 09:23 AM Report #23319 Posted April 21, 2006 at 09:23 AM Em C também. Pointeiros são iguais em tudo o que é linguagem C (C# de C só tem o nome.). Eu estava a falar nisto: A referência (referência a um objecto) é algo só disponível emC++ (não existe em C). int i =3; int &j = i; Isto pode ser confuso mas tem o significado “dar à variável i um segundo nome”. Em programação orientada por objectos as referências são importantes pois são meios eficientes de passar objectos como parâmetros
ouvi_dizer Posted April 21, 2006 at 09:30 AM Report #23320 Posted April 21, 2006 at 09:30 AM Deve ser uma questão linguistica. Passar parametros por referencia ou valor é possivel em C (caso contrário apontadores não fariam sentido), passar objectos em C não é possivél (porque não existe o conceito sequer). C é uma linguagem estruturada, C++ é OO. int i=0; int &i=i; é prefeitamente possível. (visto que int é um tipo de dados básico e não um objecto).
Dani Posted April 21, 2006 at 11:38 AM Report #23333 Posted April 21, 2006 at 11:38 AM Boas Eu posso tentar explicar qualquer coisita de ponteiros em C, mas como não os uso muito vou só explicar as coisas mais básicas. Então aqui vai: Noção de Ponteiro -> Um ponteiro é uma variável que contém o endereço de uma variável Ou seja, se tivermos num um inteiro e p um ponteiro p = &num , diz-se que p aponta para num & O operador unário & dá o endereço de um objecto. Só se aplica a objectos em memória como variáveis e arrays. NÃO se pode apliar a expressões ou contastes. * Este operador é a variável apontada por. Ou seja aplicando este operador a um ponteiro acedemos ao objecto para o qual este aponta. Pequeno exemplo: int x=1, y=2, z[10]; int *ip /*ponteiro paran uma variavel int*/ ip = &x; /*ip aponta para x*/ y = *ip; /*y fica com o valor da variavel apontada por ip. y passa a ser 1*/ *ip = 0; /*a variavel apontada por ip passa a ser 0. x pass a ser 0*/ ip = &z[0] /*ip aponta para z[0]*/ E pronto sei que não é muito mas para quem não conheçe o conceito de ponteiros, ou para quen está a começar, acho que deve de ajudar. Como o tempo não é muito, há que aproveitar os ultimos dias de férias, depois se quiserem eu deixo aqui mais qualquer coisa. Cumps
brink@ero Posted April 21, 2006 at 02:52 PM Report #23371 Posted April 21, 2006 at 02:52 PM Deve ser uma questão linguistica. Passar parametros por referencia ou valor é possivel em C (caso contrário apontadores não fariam sentido), passar objectos em C não é possivél (porque não existe o conceito sequer). C é uma linguagem estruturada, C++ é OO. int i=0; int &i=i; é prefeitamente possível. (visto que int é um tipo de dados básico e não um objecto). Apesar de ambos compilarem, isso não implica que façam a mesma coisa. Em C++ isto: int i =3; int &j = i; Faz com que j=3 e se alterares o i -> altera o j e vice-versa, ou seja, temos "uma variável" com diferentes nomes. Enquanto que em C int i =3; int &j = i; Isto força que o endereço de memória do j seja 3. E o valor de j é o que estever nesse endereço! Para em C fazeres algo parecido utilizas apontadores: que é uma variável em que tem como valor o endereço de memória de outra. Então fazes isto: int i=3 int *j = &i Ou seja, temos duas variáveis em que uma delas é um apontador j que tem como valor o endereço de memória do i. O endereço de memória do i é obtido colocando & antes do i. O que é diferente do que acontece em C++. Numa tentativa de fazer em C a passagem por referência que ocorre em C++, seria uma coisa do gênero (não sei se isto compila): int i=3 int &j = &i Ou seja, duas variáveis com o mesmo endereço de memória, ou por outras palavras, "uma variável" com diferentes nomes.
ouvi_dizer Posted April 21, 2006 at 04:14 PM Report #23391 Posted April 21, 2006 at 04:14 PM Confesso que me baralhaste. É possivel que tenhas razão, mas penso que funcionam da mesma maneira. De qq forma só mesmo experimentado todas as situações que colocaste.
theproject Posted April 24, 2006 at 01:40 AM Report #23917 Posted April 24, 2006 at 01:40 AM brinkaero: de facto esse codigo nao faz sentido em C. Sei C muito bem mas C++ não tanto pq nunca tive grande paciencia para ler o stroustrap, mas de facto uma das poucas coisas que nao gosto no C++ é a passagem por referencia, não permite fazer nada que não se faca com o mecanismo de C e complica as coisas porque "ofusca" o que sao ponteiros e o que são tipos verdadeiros etc... Alias, eu aposto que os gajos para implementarem a referencia simplesmente metem o operador de conteudo antes. do tipo , kuando fazes int &j=i; j=23; o k ele faz de facto é int* j=&i; *j = 23; e obtens o mesmo comportamento de alterar o valor das duas variaveis ao mesmo tempo... Corrigam-me se estou errado, mas kuando vi isto no C++ simplesmente ignorei... não há nada como um ponteiro pa ponteiro pa ponteiro pa ponteiro ... pa ponteiro para a cena 😄
brink@ero Posted April 24, 2006 at 08:40 AM Report #23926 Posted April 24, 2006 at 08:40 AM brinkaero: de facto esse codigo nao faz sentido em C. Sei C muito bem mas C++ não tanto pq nunca tive grande paciencia para ler o stroustrap, mas de facto uma das poucas coisas que nao gosto no C++ é a passagem por referencia, não permite fazer nada que não se faca com o mecanismo de C e complica as coisas porque "ofusca" o que sao ponteiros e o que são tipos verdadeiros etc... Alias, eu aposto que os gajos para implementarem a referencia simplesmente metem o operador de conteudo antes. do tipo , kuando fazes int &j=i; j=23; o k ele faz de facto é int* j=&i; *j = 23; e obtens o mesmo comportamento de alterar o valor das duas variaveis ao mesmo tempo... Corrigam-me se estou errado, mas kuando vi isto no C++ simplesmente ignorei... não há nada como um ponteiro pa ponteiro pa ponteiro pa ponteiro ... pa ponteiro para a cena 😄 É o seguinte, sinceramente não percebo muito o que está por de trás do compilador C++. Quem me ensinou isto da passagem por referência é um prof. cromo em progamação no técnico (ele é do tempo em que a programação era feita com cartões perfurados!!), principalmente em C. Ele disse que nos íamos programar em C++ por ser mais restrito que C (em C podemos fazer todas as aldabrices que quisermos). Ele também referiu que a passagem por referência em C++ não o mesmo que os ponteiros em C e que era uma coisa mais requintada. Como ele diz: "É como se tivessemos uma variável com dois nomes". Talvez internamente tenhas razão e isto seja um apontador com condições muito restritas para evitar erros dos quais o compilador não consegue detectar! Para os apontadores normais podes fazer o que quiseres que o compilador não se queixa, agora em C++ a passagem de referência tem de ser sempre inicializada e depois da inicialização esta não pode mudar de referência: int num1 = 10; int num2 = 20; int &RefOne = num1; // valid int &RefOne = num2; // error, two definitions of RefOne RefOne = num2; // assign num2 to num1 int &RefTwo; // error, uninitialized reference int &RefTwo = num2; // valid
theproject Posted April 24, 2006 at 10:03 AM Report #23935 Posted April 24, 2006 at 10:03 AM Boas, pois de facto deve ser como dizes, mas continuo com a minha opiniao, visto que as "aldrabices" que podes fazer em C sao um mecanismo perigoso mas muito útil se usado com cuidado. Apenas perguntei por curiosidade pq tou a fazer agora um compilador para uma linguagem com ponteiros e questionei-me como implementaram, mas internamente deve ser de facto um ponteiro mas com mais restriçoes. Quando tiver mais tempo investigo melhor isso e talvez veja a utilidade das referências, fica bem []
suzy Posted May 5, 2006 at 08:12 PM Report #25900 Posted May 5, 2006 at 08:12 PM 😛 Oi Malta!! Pessoalmente acho o livro de Luís Damas um optimo Livro para quem está a começar a aprender 😉, mas para aprofundar conhecimentos não é o ideal . Um Livro que acho excelente é sem duvida C programming de K.N.kING 😉, É 5 ESTRELAS , so tem um senão, é em ingles, mas quem perceber de ingles, é canja 🙂
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now