tag:blogger.com,1999:blog-6926985245178197542.post7660920844325159754..comments2024-03-23T15:34:28.415-07:00Comments on C Progressivo: Passando structs por referência para funções - O operador ->Unknownnoreply@blogger.comBlogger12125tag:blogger.com,1999:blog-6926985245178197542.post-45455668681645690562021-05-05T07:12:29.307-07:002021-05-05T07:12:29.307-07:00E seu eu passar um vetor do tipo 'carro'co...E seu eu passar um vetor do tipo 'carro'como argumento para uma função? Como ficaria? Por exemplo:<br />CARRO car[5];<br />Como passaria isso como argumento? E como a função seria declarada de modo a receber?Wesleyhttps://www.blogger.com/profile/13161637488924561137noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-11089151552265890762019-08-10T16:10:06.682-07:002019-08-10T16:10:06.682-07:00Autor, então como devo prosseguir com alocação din...Autor, então como devo prosseguir com alocação dinamica? Veja:<br /><br />CARRO *fusca = (CARRO*)calloc(10, sizeof(CARRO));<br /><br />strcpy( (*fusca[2]).modelo , "Gol" );<br /><br />Esse formato não deveria funcionar também de acordo com o texto?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-34862032377550368842017-08-17T09:50:21.890-07:002017-08-17T09:50:21.890-07:00Por favor, alguem me de uma ajuda de como passar p...Por favor, alguem me de uma ajuda de como passar por referencia VETORES de STRUCT. Não estou conseguindo de jeito nenhum.Rayllerhttps://www.blogger.com/profile/06242859021704763530noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-3709265499924290782016-09-19T00:08:46.753-07:002016-09-19T00:08:46.753-07:00Guilherme0890, nessa situação como se trata de um ...Guilherme0890, nessa situação como se trata de um vetor ele próprio já é passado por referência, daí não precisa usar "*" nem "->" para alterar o valor do campo no array. A passagem para a função é feita de forma direta, apenas colocando o tamanho do array.<br />Ex:void ler(carro novo[2]){<br /> int cont;<br /> for(cont=0;cont<MAX;cont++){<br /> fflush(stdin);<br /> printf("\nDigite os dados do veiculo %d\n",cont+1);<br /> printf("Digite o modelo do carro: ");<br /> gets(novo[cont].modelo);<br /> printf("Digite a cor do carro: ");<br /> gets(novo[cont].cor);<br /> ....<br /> dentro da main<br /> ... ler(novo);Ulisseshttps://www.blogger.com/profile/00798060361879903117noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-16592665785393785382015-05-10T19:13:59.042-07:002015-05-10T19:13:59.042-07:00Tambem estou com a duvida de um amigo acima que nã...Tambem estou com a duvida de um amigo acima que não foi respondido porque sua pergunta não foi entendida, mas é o seguinte, no caso do exemplo de criação de carro temos a struct:<br />typedef struct<br />{<br /> char modelo[30];<br /> int ano, poras;<br />}CARRO;<br /> daí se o enunciado pedisse pra cadastrar mais de um carro<br />CARRO cars[3];<br />quando eu fosse preencher o modelo do primeiro carro por exemplo na função, como ficaria?<br />Eu tentei <br />fgets(cars[cont]->modelo,30,stdin);<br />porem deu errado,<br />mudei pra "gets" e tambem deu errado<br />apresentando o erro "invalid type argument '->'".<br /><br />Como seria a forma correta?Guilherme0890https://www.blogger.com/profile/04426548621483784620noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-87727679560739846362014-01-16T13:17:54.621-08:002014-01-16T13:17:54.621-08:00lixo virtual,
Ao usar (*car).anoFabricacao na fun...lixo virtual,<br /><br />Ao usar (*car).anoFabricacao na função printf("Ano de Fabricaco: %d, (*car).anoFabricacao); , estamos mostrando o valor do campo anoFabricacao da struct CARRO. <br /><br />Usando &(*car).anoFabricacao na funcao scanf("%d",&(*car).anoFabricacao); , estamos armazenando um valor que o usuário informou no campo anoFabricaco da struct CARRO.<br /><br />Não sei se ficou claro, mas é isso.Anonymoushttps://www.blogger.com/profile/16358810491990595520noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-3383700641942874912013-12-07T04:57:18.668-08:002013-12-07T04:57:18.668-08:00eu nao entendi bem porque usar
&(*car).anoFab...eu nao entendi bem porque usar <br />&(*car).anoFabricacao, tipo, o asterisco serve pra dizer que queremos o valor, e o "&", pra dizer que queremos o endereço, entao oque voce fez foi pegar o valor do ponteiro car, e depois pegar o endereço do valor do ponteiro. Nao da pra simplesmente colocar car.anoFabricacao, sem o "&" nem o "*"?lixo virtualhttps://www.blogger.com/profile/07504364699685325561noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-57332334773653796132013-09-17T20:44:38.352-07:002013-09-17T20:44:38.352-07:00Olá Anônimo,
O que você quer dizer com 'estru...Olá Anônimo,<br /><br />O que você quer dizer com 'estrutura vetor' ? Não entendi bem.Apostila C Progressivohttp://www.cprogressivo.net/2013/03/Como-passar-structs-para-funcoes-por-referencia-em-C.htmlnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-51623986066680445252013-09-17T08:49:51.763-07:002013-09-17T08:49:51.763-07:00Olá,
Muito bom sua apostila. Observei ali que uma...Olá,<br /><br />Muito bom sua apostila. Observei ali que uma função recebe por referencia uma estrutura. Como seria se esta função recebesse por referencia uma estrutura vetor ?<br /><br />forte a todos.<br />obrigado.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-34952374202418312822013-08-10T06:19:35.584-07:002013-08-10T06:19:35.584-07:00Amigo o código:
void transfereTempPos( Pilha **pP...Amigo o código:<br /><br />void transfereTempPos( Pilha **pPos, Pilha **pTemp, Pilha *aux )<br /> aux = (*(*pTemp)).prox; //(*p).x = 7.0; ou p->x = 7.0;<br /> (*(*pTemp)).prox = *pPos;<br /> *pPos = *pTemp;<br /> *pTemp = aux;<br /><br /><br />Poderia me explicar o uso de dois asterisco **pPos e (*(pTemp)).prox = *Pos?<br /><br />Ta meio obscuro isso para mim ainda.<br /><br />ObrigadoNick Arcoshttps://www.blogger.com/profile/05186113281785456090noreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-83802769060120469312013-06-04T03:36:16.510-07:002013-06-04T03:36:16.510-07:00Olá Unknown,
Cara, essas coisas de 'função pe...Olá Unknown,<br /><br />Cara, essas coisas de 'função perigosa', 'não indicada', 'uso errado', 'uso não recomendado' etc, é complicado.<br /><br />Se formos ser rigorosos, vamos acabar programando da maneira como se programa em C pro Kernel do Linux, ou seja, de uma maneira bem otimizada e altamente rígida.<br /><br />Nosso objetivo aqui no curso é ensinar iniciantes, para quem está começando mesmo a aprender.<br />Creio que se formos ensinar todos esses detalhes e pormenores, vai acabar ficando complicado e desestimulante.<br /><br />Mas informação nunca é demais, por isso agradecemos e vamos deixar seu comentário aí.<br />Sinta-se a vontade para nos dar outras dicas como esse e sua opinião.Apostila C Progressivohttp://www.cprogressivo.netnoreply@blogger.comtag:blogger.com,1999:blog-6926985245178197542.post-48212189260101601492013-06-03T20:59:10.635-07:002013-06-03T20:59:10.635-07:00Cara você utiliza o gcc como compilador ? Pois pel...Cara você utiliza o gcc como compilador ? Pois pelo que eu saiba o gets não pertence mais a biblioteca padrão e deve se utilizar fgets em vez do gets. Pelo menos é o que vi em alguns sites, como esses:<br />http://gcc.gnu.org/ml/gcc-help/1999-10n/msg00077.htmlUnknownhttps://www.blogger.com/profile/03774454326415057481noreply@blogger.com