Programar em C - Passar Ponteiro Como Parâmetro de Uma Função - Aula 66

แชร์
ฝัง
  • เผยแพร่เมื่อ 18 ธ.ค. 2024

ความคิดเห็น • 91

  • @NegoMoraes78
    @NegoMoraes78 4 ปีที่แล้ว +24

    Em 2020 agradecendo e parabenizando por um vídeo de 2013 (rsrs), mas essa foi a melhor explicação que ouvi (principalmente a parte do benefício do uso de ponteiros). Realmente uma visão de Aluno para Aluno. Que Deus continue te abençoando.

  • @tenma_vr7738
    @tenma_vr7738 ปีที่แล้ว +2

    vc merece um premio nobel

  • @rildianTheGreatest
    @rildianTheGreatest ปีที่แล้ว

    Excelente vídeo! Gostei bastante dessa explicação no final, apesar de eu gostar de abstração, não faz mal entender o propósito das coisas, sem ser num sentido mais de você ter a possibilidade de fazer algo.

  • @fpazoti
    @fpazoti ปีที่แล้ว

    Ótima explicação. A gente sempre acha o que é um ponteiro, mas não para que e porque utilizá-lo. Parabéns pelo vídeo!

  • @RafaelaSantana-z3x
    @RafaelaSantana-z3x ปีที่แล้ว

    aula incrível com uma didática maravilhosa!

  • @mariacardoso5145
    @mariacardoso5145 3 ปีที่แล้ว +1

    Nossa! Agora clareou tudo! Parabéns pelas aulas!

  • @tanisemoreira1401
    @tanisemoreira1401 7 ปีที่แล้ว +3

    Por favor, faz mais aulas!!! Suas aulas são as melhores do TH-cam!

  • @millenaguida9105
    @millenaguida9105 2 ปีที่แล้ว

    Estou no primeiro semestre de ADS, suas aulas estão sendo de grande ajuda!

  • @claudecirmartins
    @claudecirmartins 3 ปีที่แล้ว

    Muito BOM!!! - Tão claro qto o Sol que brilha ao meio-dia.

  • @matheusoliveira6631
    @matheusoliveira6631 4 ปีที่แล้ว +1

    Muito esclarecedora essa aula

  • @LuisLima-rc2ls
    @LuisLima-rc2ls 6 ปีที่แล้ว +1

    perfeita aula, o professor explica muito bem, meus parabéns!

  • @dapragotto
    @dapragotto 10 ปีที่แล้ว +1

    Parabéns pelas aulas, Ítalo! Elas nos ajudam muuuuito mesmo! Obrigado!

  • @manoelrego7196
    @manoelrego7196 ปีที่แล้ว

    o assunto é confuso, mais o cara é fera de mais

  • @karamazovsc
    @karamazovsc 8 ปีที่แล้ว

    Muito legal, estou começando a ver aplicação prática utilizando os ponteiros.

  • @Infante760
    @Infante760 6 ปีที่แล้ว +9

    Muito bom meu amigo. Agora o uso de ponteiros faz sentido para mim.
    Muito obrigado. Vou compartilhar teu canal entre os meus amigos e recomendar sempre que alguém tiver alguma dificuldade.

  • @hybekihyuga4214
    @hybekihyuga4214 7 ปีที่แล้ว +1

    Muito esclarecedor.

  • @ciceranorte354
    @ciceranorte354 2 ปีที่แล้ว

    gratidao por esse conteudo excelente🤩

  • @brasiltropicaltop
    @brasiltropicaltop 10 ปีที่แล้ว

    Maravilha o canal ta me ajudando muito...

  • @MatrixExplode
    @MatrixExplode 11 หลายเดือนก่อน

    Excelente!!!!

  • @brenooliver8824
    @brenooliver8824 ปีที่แล้ว

    Muito bom mano

  • @LupusBR
    @LupusBR 7 ปีที่แล้ว

    Sensacional essa explicação!

  • @rodrigooliveira5508
    @rodrigooliveira5508 9 ปีที่แล้ว +10

    Cara, melhor vídeo aula de programação que eu já vi, só gostaria de perguntar o porque de você ter criado o ponteiro *pteste, apontando para variável teste, pois o endereço da variável teste poderia ter sido passado para a função sem esse intermediário.

    • @lucasdarianschwendlervieir3714
      @lucasdarianschwendlervieir3714 7 ปีที่แล้ว

      Acho que na pratica, os dois modos são usados.

    • @ignacioito8606
      @ignacioito8606 5 ปีที่แล้ว +1

      Foi só para mostrar que vc pode alterar a var test através de uma var *pTeste e para traçar o paralelo entre as duas formas...

  • @ottocley
    @ottocley 10 ปีที่แล้ว

    mto bom, rápido e objetivo!

  • @brunogbitencourt
    @brunogbitencourt 8 ปีที่แล้ว

    Excelente as aulas, parabéns

  • @guilhermecintra1917
    @guilhermecintra1917 8 ปีที่แล้ว

    Valeu cara !! me salvou!kk

  • @AndrewDevos
    @AndrewDevos 9 ปีที่แล้ว +2

    te amo cara

  • @maykonsilva9378
    @maykonsilva9378 11 ปีที่แล้ว +2

    Tenho uma curiosidade, em vários vídeos você está sempre criando o protótipo das funções dentro de main, por que não fora?

  • @manoelrego7196
    @manoelrego7196 ปีที่แล้ว +1

    sei que todas essas funções são usadas no dia-a-dia da vida de programador, mais na hora do aprendizado por mais entenda o assunto fico achando que um dia posso precisar e não dar conta

  • @geliogelio2203
    @geliogelio2203 10 ปีที่แล้ว +1

    Em 0:27 quando se diz: "... criamos uma 'FUNÇÃO' chamada teste ..." não seria: criamos uma 'VARIÁVEL' chamada teste? Fiquei um pouco confuso. Quando declaro uma variável posso tbm chamá-la de função? Obrigado.

    • @Brenosalv
      @Brenosalv 10 ปีที่แล้ว

      Ele errou ao chamar a variável teste de função. Na verdade, é variável teste mesmo... pode confiar. :)

  • @DeAlunoParaAluno
    @DeAlunoParaAluno  11 ปีที่แล้ว

    em breve ;)

  • @imrightandyourewrong6404
    @imrightandyourewrong6404 3 ปีที่แล้ว

    Bom tarde

  • @victorlima4597
    @victorlima4597 9 ปีที่แล้ว +2

    Ei fera, muito boas suas aulas. Qual é a diferença entre x++ e ++x ? VLW

    • @ramongiovane
      @ramongiovane 9 ปีที่แล้ว

      +Victor Lima é a mesma coisa, escrita de maneira diferente: x++ ou ++x é o mesmo que x = x + 1;

    • @gabrielguimaraes5970
      @gabrielguimaraes5970 9 ปีที่แล้ว +3

      +Ramon Giovane Mais ou menos isso ramon, so que escrevendo ++x ele incrementa e depois atribui e x++ ele atribui e depois incrementa, em um for por exemplo cada qual iria se comportar de maneira diferente.

    • @ramongiovane
      @ramongiovane 9 ปีที่แล้ว +2

      +Gabriel Guimarães hmm... não sabia disso. Sempre uso variável++ :P
      Vlw

    • @brunocalhiari976
      @brunocalhiari976 9 ปีที่แล้ว +2

      +Victor Lima
      x++ é o mesmo que x + 1
      ++x é o mesmo que 1 + x
      em alguns casos isso pode fazer diferença

    • @gabrielsales312
      @gabrielsales312 9 ปีที่แล้ว +8

      no ++x o 1 ele ja e adicionado ali na hora
      no x++ ele so adiciona 1 a partir da proxima linha

  • @sadDota
    @sadDota 6 ปีที่แล้ว +1

    Olá, estou com uma grande duvida depois dessa aula, ótima por sinal.
    Mas então, durante este semestre na faculdade recebi o desafio de desenvolver um programa que por meio de funções, em uma delas, substitui-se os valores repetidos de um vetor(vetor este com os valores entrados pelo usuário) por zero, e em outra função, substitui-se os valores negativos, também por zero.
    Ai que vem a duvida, os valores alterados pela função de substituir os negativos(que no sequencia vinha antes do dos repetidos) eram mantidos como zero na hora de serem imprimidos após a função de substituir os repetidos.
    As funções não deveriam criar copias do vetor?
    Já testei de varias maneiras, usando os printf's dentro das próprias funções, usando eles fora, e a única maneira de não serem mantidas as alterações foi criando um vetor2 que no inicio do programa recebe os valores do vetor original.
    Sei que a duvida não tem a ver com ponteiros, mas espero que possa responde-la e que tenha deixado bem claro a mesma.
    Demonstrado interesse pela duvida ficarei feliz em compartilhar o programa em questão.
    Desde já obrigado.

  • @grodo.
    @grodo. 3 ปีที่แล้ว

    Passei por Algoritmos e Programação II com C e APANHEI O QUANTO É POSSÍVEL em ponteiros e ainda mais em ponteiros de ponteiros. Agora entrarei em Estrutura de Dados, resolvi dar uma revisada e queria ter visto isso na época de AlgProgII. E sim, provavelmente vou apanhar ainda mais em Estrutura de Dados, mas pelo menos vi esses vídeos skfkdkd

    • @GabrielSilva-sj2hf
      @GabrielSilva-sj2hf 2 ปีที่แล้ว +1

      Sobreviveu?

    • @grodo.
      @grodo. 2 ปีที่แล้ว +1

      @@GabrielSilva-sj2hf rapaz... foi melhor que em AlgProgII. Apanhei mesmo foi em Sistemas Operacionais

    • @GabrielSilva-sj2hf
      @GabrielSilva-sj2hf 2 ปีที่แล้ว +1

      @@grodo. comecei em agosto em sistemas de informações, já tô bem avançado, pretendo continuar nesse ritmo pra não ter muitos problemas.

    • @grodo.
      @grodo. 2 ปีที่แล้ว

      @@GabrielSilva-sj2hf faça isso amigo, tranquei esse ano por causa de problemas com a pandemia e logística, e agora to com um puta medo quando retornar pra lá em 2023

    • @GabrielSilva-sj2hf
      @GabrielSilva-sj2hf 2 ปีที่แล้ว +1

      @@grodo. entendi, vlw pelo conselho. Espero que consiga colocar as coisas no eixo.

  • @gustavoanjos2234
    @gustavoanjos2234 9 ปีที่แล้ว

    Queria uma aula de Passagem de função como parâmetro para outra função

  • @EduarteBDO
    @EduarteBDO 7 ปีที่แล้ว +1

    No caso ai, não precisava criar uma outra variável chamada pTeste. era só passar na função testePonteiro(&teste); que já enviaria o endereço de teste

  • @helobatatinha
    @helobatatinha 11 ปีที่แล้ว +1

    cade a continuação de ponteiros e funçoes??

  • @mrmssjim
    @mrmssjim 6 ปีที่แล้ว +30

    Chrome foi desenvolvido sem ponteiros 🤔 Procede? Kkkkkkk

    • @webpunisher2954
      @webpunisher2954 5 ปีที่แล้ว +2

      nossa nunca pensei nisso kkkkkkkkk bem pensado

    • @MatheusAlves-zl9bm
      @MatheusAlves-zl9bm ปีที่แล้ว

      @@webpunisher2954 mintira
      ele unsou portero

  • @Orcus47
    @Orcus47 5 ปีที่แล้ว

    passagem por valor e referência mandou abraços ! kkkkkkkkk

  • @AntonioSouza
    @AntonioSouza 10 ปีที่แล้ว

    Já vi o uso de flushs para limpar a memória nesses casos de ir usando muitos pedaços dela.

  • @catarinagameryotuber2776
    @catarinagameryotuber2776 4 ปีที่แล้ว +2

    8 ponteiros sem noção n gostaram dessa obra-prima

  • @mentoresparavida548
    @mentoresparavida548 6 ปีที่แล้ว +1

    a gente entende a funçao prmiordial de ponteiros quando pensamos que os computadores da epoca que alinguagem c foi criada tinham no maximo 8 ou 16 klobytes de memoria. ao inves de 4 gb dos que temos disponiveis hoje...

  • @isadoralmeida06
    @isadoralmeida06 11 ปีที่แล้ว

    Nesse caso deu certo, porque as funções estão abaixo do Main, nem precisava ele ter criado os protótipos. Agora, se ele colocasse a função antes do main, daria erro, os protótipos teriam que ser colocados fora do main, abaixo das bibliotecas.

  • @AntonioSouza
    @AntonioSouza 10 ปีที่แล้ว

    Gosto muito das aulas. De aluno para aluno é mesmo muito bom.
    Só fiquei na dúvida aqui. Você disse que (int *pX) está apontando para o endereço. Certo, de certa forma sim, mas nesse caso aí seria para o valor nesse endereço em questão. Certo? Ou estou enganado?
    void testePonteiro(int *pX){
    ++*pX;
    }
    Seguindo mais o vídeo entendi que a chamada que eu indaguei acima recebe o endereço da memória e então mostra o valor contido nela... Acho que é isso.

    • @erasmobellumat3973
      @erasmobellumat3973 10 ปีที่แล้ว +1

      As 2 coisas meu amigo. Se voce colocar um * antes da variável do ponteiro, vc vai estar acessando o valor que ele esta apontando no endereço que este ponteiro esta armazenando. Agora, se vc nao colocar, vc nao coloca o *, ele aponta para o endereço.

  • @vcatafesta
    @vcatafesta 8 ปีที่แล้ว

    Algum exemplo de ponteiro char?

  • @espere_ai
    @espere_ai 2 ปีที่แล้ว

    cara, tô maratonando os vídeos, só assim consigo entender, tava osso

  • @raullcarvalho6338
    @raullcarvalho6338 8 ปีที่แล้ว

    Alguém sabe me dizer o que está errado no código abaixo?
    Era pra imprimir a matrícula do aluno, mas aparece o erro: "dereferencing pointer to incomplete type"
    void imprime(struct cadastro *a)
    {
    printf("%i",(*a).matricula);
    }
    int main()
    {
    setlocale(LC_ALL,"");
    struct cadastro{
    char nome[80];
    int matricula;
    float notas[2];
    }aluno;
    int i;
    printf("Digite o nome do aluno:
    ");
    gets(aluno.nome);
    printf("Digite a matrícula do aluno:
    ");
    scanf("%i",&aluno.matricula);
    for(i = 0; i

  • @manoelrego7196
    @manoelrego7196 ปีที่แล้ว

    entendi bem , mais sempre fica aquele receio de que no dia que precisa não consegui fazer.

  • @ericgmicaela
    @ericgmicaela 6 ปีที่แล้ว

    Irmao, seus videos são excelentes, porém o local que colocastes para passar ou retornar entre as aulas ficou inacessível.

  • @Adestudos
    @Adestudos 6 หลายเดือนก่อน

  • @gilbertodasilva4559
    @gilbertodasilva4559 ปีที่แล้ว

    eu to com um problema que nao entendi poderia me explicar
    typedef struct ELEMENTO{
    int data;
    ELEMENTO* next;
    }
    typedef struct ESTRUTURA{
    ELEMENTO* head;
    }
    ESTRUTURA *e;
    queria entender segunda struct e a variavel abaixo poderia me da uma luz

  • @taodamata9869
    @taodamata9869 7 ปีที่แล้ว

    passei um pointeiro assim: func( *teste); não aceitou mas se escrever func(char *)(teste)); aceita , porque?

  • @levi23244
    @levi23244 10 ปีที่แล้ว

    Complicou um pouco rsrs -.-

  • @gustavonunes7022
    @gustavonunes7022 5 ปีที่แล้ว

    Professor, bom dia. Eu estou acompanhando suas aulas sobre ponteiros, porém, eu não entendi qual é a real utilidade dos ponteiros. Por exemplo, no código dessa aula. Você passou como parâmetro o endereço de memória da variável, então, em vez do programa criar uma cópia da variável, ele simplesmente altera diretamente o valor dentro do endereço de memória referente a tal variável. Até ai tudo bem. Porém, se eu criasse uma variável global não daria no mesmo? Por exemplo:
    #include
    //Variável Global
    int x = 1;
    void testeVariavel(){
    ++x;
    }
    void testePonteiro(int *pX){
    ++*pX;
    }
    int main(int argc, char **argv) {
    int *pTeste = &x;
    testeVariavel(x);
    printf("Global: %i
    ",x);
    //Voltei a variável para 1. Assim, consigo exemplificar que o valor será o mesmo, tanto com a global quanto com ponteiro
    x = 1;
    testePonteiro(pTeste);
    printf("Ponteiro: %i",x);
    getchar();
    return 0;
    }
    Se você executar esse código o valor será 2 para ambos os caso, global e ponteiro. Nesse caso, seguindo sua explicação, eu não teria um consumo enorme de memória, pois eu teria somente uma variável criada e ao longo do programa eu poderia mudar o valor dela dentro da função sem ter a necessidade de cria-la novamente. Então essa é minha duvida. Afinal, qual a real utilidade do ponteiro? Eu sei que ele deve ter uma tremenda utilidade, porém, eu não consegui enxergar-la, ainda. Talvez eu tenho falado um monte de groselha, mas realmente tenho duvida quanto a isso.
    Desde já agradeço pela sua atenção e por todo o conhecimento compartilhado.

    • @odiwalker3973
      @odiwalker3973 5 ปีที่แล้ว

      Num programa "de verdade" existem muitas variáveis, algumas são pertinentes por um script inteiro (ou mais de um), outras são usadas apenas ocasionalmente aqui e ali (tipo um int x aqui, um float somatorio ali...), não convém poluir o seu código tornando todas elas em variaveis globais, fora a questão da segurança e organização em ter variáveis com escopos restritos a apenas algumas funções específicas.
      E imagina se você quiser trabalhar com vetores dinâmicos? Vai criar uma variável global pra simular cada index do vetor? Enfim, ao menos em C, é mais organizado, seguro e limpo usar ponteiros do que transformar qq variavelzinha que você quiser alterar (com o nível de dinamismo do ponteiro) em uma global

    • @AntonioRodrigues-hd3gt
      @AntonioRodrigues-hd3gt 4 ปีที่แล้ว +1

      Resumindo a utilidade dos ponteiro é poupar muita memória, e fluidez na execução.

  • @programacaojajava
    @programacaojajava 6 ปีที่แล้ว

    Por que não fazemos assim??
    int main()
    {
    int testeVariavel(int x);
    void testePonteiro(int *pX);
    int teste = 1;
    int *pTeste = &teste;
    testePonteiro(pTeste);
    printf("%i
    ", teste);
    printf("%i
    ", teste);
    getchar();
    return 0;
    }
    int testeVariavel(int x){
    ++x;
    return x;
    }
    void testePonteiro(int *pX){
    ++*pX;
    }

  • @cobainrafa7
    @cobainrafa7 10 ปีที่แล้ว +2

    Vish... Complicado hein..

    • @joaomarcoscarvalho10
      @joaomarcoscarvalho10 10 ปีที่แล้ว +1

      complicado msm, por isso que a linguagem c depende muito de PRATICA

    • @cobainrafa7
      @cobainrafa7 10 ปีที่แล้ว +2

      verdade..

  • @ViniciusGettingBetter
    @ViniciusGettingBetter 9 ปีที่แล้ว

    Por que o mesmo não acontece com vetores? Ao passarmos um vetor, o valor do vetor original também é alterado!
    #include
    void testeVariavel (int x){
    printf("\tx antes: %i
    ",x);
    ++x;
    printf("\tx depois: %i
    ",x);
    }
    void testePonteiro(int *pX){
    printf("\tpX antes: %i
    ",*pX);
    ++*pX;
    printf("\tpX depois: %i
    ",*pX);
    }
    void testeVetor (int x[]){
    printf("\tvetor x antes: %i
    ",x[0]);
    ++x[0];
    printf("\tvetor x depois: %i
    ",x[0]);
    }
    int main() {
    int teste = 1;
    int *pTeste = &teste;
    int vteste[] = {1};
    printf("teste antes: %i
    ",teste);
    testeVariavel(teste);
    printf("teste depois: %i

    ",teste);
    printf("teste antes: %i
    ",teste);
    testePonteiro(pTeste);
    printf("teste depois: %i

    ",teste);
    printf("vteste antes: %i
    ",vteste[0]);
    testeVetor(vteste);
    printf("vteste depois: %i

    ",vteste[0]);
    printf("
    Se for vetor, o valor de vteste muda, mesmo nao utilizando um ponteiro...
    ");
    return 0;
    }

    • @brunooliveira3549
      @brunooliveira3549 8 ปีที่แล้ว +1

      +Vinicius Getting Better Quando passamos vetor automaticamente ele vai como ponteiro;
      Ex
      int A[10];
      O "A" armazena o primeiro endereço do vetor. Quando passa o vetor para a função. Ela entende como se voce tivesse passado *A com 10 posições.

    • @gabrielguimaraes5970
      @gabrielguimaraes5970 8 ปีที่แล้ว

      Você pode passar simplesmente um ponteiro e alocar memoria para ele depois por exemplo
      int *vetor;
      funcao( vetor );
      funcao( int *vetor ){
      //decidimos que o tamanho vai ser 10 (pode variar o tamanho você quem escolhe)
      vetor = malloc( sizeof(int )* 10 );
      }

  • @pedrodark5003
    @pedrodark5003 8 ปีที่แล้ว

    cara nao entendi nada"---->nada

  • @adrianocosta2159
    @adrianocosta2159 5 ปีที่แล้ว

    aula Horrivel

  • @azorahai3883
    @azorahai3883 5 ปีที่แล้ว

    Muito ruim, além de não usar cor fica tudo preto e ainda explica muito rápido, pra quem e lerdo e meio burro igual eu tem que rever o vídeo mais de uma vez, mas vlw pela ajuda. Da próxima usa cor e explica mais devagar. Obg!

    • @deegas
      @deegas 4 ปีที่แล้ว

      claro, ele vai fazer uma video aula so pra vc que eh burro...