PONTEIROS SÃO MAIS EFICIENTES E EU VOU PROVAR! LINGUAGEM C

Поділитися
Вставка
  • Опубліковано 4 січ 2025

КОМЕНТАРІ • 116

  • @deathnote7943
    @deathnote7943 7 місяців тому +24

    Show de bola Wagner como vc esta irmão força para vc e os irmãos aí do sul do país

    • @canalwrkits
      @canalwrkits  7 місяців тому +4

      Valeu meu amigo! Tempos bem difíceis.

  • @joao_almeida_1978
    @joao_almeida_1978 7 місяців тому +12

    É cerca de 17% mais rápido, fazendo exatamente a mesma coisa. Sem dúvidas que é um baita aumento de eficiência.

  • @pombo404
    @pombo404 7 місяців тому +17

    Cara fantástica a aula do Wagber Rambo, literalmente vestindo a camisa do C! Lembrando que já faz mais de 20 anos que falam em acabar com a linguagem C, mas quando é necessário performance com portabilidade todo mundo corre para utilizar a linguagem C, são inúmeras aplicações escritas em C/C++ do sistema operacional que você utiliza passando por navegadores até o back end da pagina de busca do google é C! O Android do seu celular é escrito em C o núcleo do iOS do iphone é C! Parabéns Wagner! Bora, bora, bora!

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Exatamente meu amigo. O C é indestrutível :)

    • @nathanmiguel76
      @nathanmiguel76 7 місяців тому +5

      A base de várias linguagens interpretadas e compiladores é o C kkkkkk. Impossível acabar com ele

    • @WendelBrito-s8s
      @WendelBrito-s8s 7 місяців тому +3

      sim mano, mesmo Rust sendo tão rápida quanto C acho muito difícil tomar o lugar disso, principalmente sistemas em que "código não seguro" são necessário.

    • @Striderr10
      @Striderr10 7 місяців тому +1

      isso mesmo

    • @kalangototal
      @kalangototal 7 місяців тому

      @@canalwrkits C e C++ é a base de tudo, eles podem tentar destruir, nunca vão conseguir substituir ambos...
      C é poderoso... e direto (um grande obrigado ao Sr Dennis Ritchie e Thompson)
      C++ como diria o nosso saudoso Bjarne, é o C com classes.
      Não importa o quanto o mercado tente mudar isso... C e C++ são a base de tudo.
      Eu recomendo fortemente inclusive, eu todo mundo que quer entrar na programação, dê uma olhada, mesmo que rápida, é basicamente supreendente o que se pode aprender e ver como evoluiu.

  • @ZonaNordico
    @ZonaNordico Місяць тому

    Isso deve fazer uma baita diferença em problemas grandes de simulação numérica

  • @popolony2k
    @popolony2k 7 місяців тому +1

    Depende do nível de otimização do compilador tb.
    Pegue o assembly gerado e aí vai perceber que no caso da versão com uso do array direto, provavelmente o compilador está usando a stack implicitamente para referenciar variavel array com o índice.
    Resumindo, cada instrução importa em microcontroladores e demais arquiteturas com baixo poder de processamento

  • @kazuhirowatanabe2799
    @kazuhirowatanabe2799 7 місяців тому +4

    Boa, poderia fazer um complemento de comparações usando assembly com as funções FSR e INDF, escrito na "unha" e ver se tbm da diferença ou não usar diretamente o assembly para projetos embarcados que exige maxima eficiência de aproveitamento dos ciclos de maquina...

  • @arnesake
    @arnesake 7 місяців тому +1

    Mais uma super aula meu amigo! Dica valiosa para todos que curtem Linguagem C! Que venham mais aulas como esta! Sempre acompanhando! Forte abraço!!!

    • @canalwrkits
      @canalwrkits  7 місяців тому +2

      Muito obrigado meu amigo! Sempre que possível trarei dicas assim, forte abraço!!!

  • @GuilhermeSantos-ph8oq
    @GuilhermeSantos-ph8oq 7 місяців тому +1

    Excelente demonstração. Gostei do método do teste! ... Muita força para todos daí para voltar tudo aos eixos novamente!!!

  • @rtiengo
    @rtiengo 7 місяців тому

    Sempre tive dificuldades para entender a importancia e o uso dos ponteiros, acabou de me esclarecer. Muito obrigado

  • @WendelBrito-s8s
    @WendelBrito-s8s 7 місяців тому

    Impressionante! Eu achava que não tinha diferença já o índice especifico acessa diretamente o valor como um ponteiro faz, muito bom saber disso.

  • @allissonrey
    @allissonrey 7 місяців тому +1

    amo seu canal, muito obrigado por continuar postando conteúdo de qualidade ♥

  • @fernandopezao100
    @fernandopezao100 7 місяців тому +1

    Parabéns pelo vídeo. Poderia fazer um vídeo sobre como contornar problemas com EMI. Abraços!

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Muito obrigado! Sugestão anotada!

  • @paulotpjr
    @paulotpjr 7 місяців тому +1

    Muito bem explicando 👏

  • @gercinosatiro
    @gercinosatiro 5 місяців тому +1

    Bela explicação professor! Destaco o cuidado na estrutura do código ao uso da palavra reservada 'register', são estes 'pequenos' detalhes que acabam fazendo uma boa diferença em um projeto extenso. Sucesso querido Wagner, obrigado pelo vídeo :)

    • @canalwrkits
      @canalwrkits  5 місяців тому +1

      Muito obrigado Gercino! Sucesso!

  • @rafaelsampaio5793
    @rafaelsampaio5793 7 місяців тому +1

    Cara... você continua fora da curva mesmo depois de 10 anos. Você bagunçou a minha cabeça kkkkk. Eu confeso que eu preciso revisar isso ai ate eu entender. O principio do ponteiro em grande escala é a salvação, eu vou tentar aplicar em meus projetos existente. Show demais!!!!

    • @canalwrkits
      @canalwrkits  7 місяців тому +2

      Valeu Rafael! Acompanhe sempre! :)

  • @AntonioSouza
    @AntonioSouza 7 місяців тому +1

    Muito bom. Fiquei curioso o que muda na parte código de máquina.
    Vou fazer o teste e olhar o binário gerado.

  • @potors
    @potors 7 місяців тому +4

    na verdade eu comparei aqui o assembly das duas funçoes, são iguais (clang -O1 -nostdlib)
    como você citou em um comentário sobre o compilador ser proprietário, eu imagino que seja ele quem está gerando essa diferença.
    nao consigo imaginar nenhum jeito mais rápido de reescrever essa função, ainda assim, bom vídeo!

    • @fbafelipe7666
      @fbafelipe7666 7 місяців тому +2

      Ele compilou sem otimizações no vídeo. Ligando otimização, o gcc vai otimizar e vai ficar igual. Note que se for sem otimização, com ponteiros ainda daria pra calcular fora do loop o endereço do final do array, e usar comparação do ponteiro como condição do loop, evitando ter que incrementar a variável de controle do loop (i).

    • @potors
      @potors 7 місяців тому +1

      @@Prescott2400-my6di Entendo o que você quis dizer, e é incrível como esses CIs gerenciam suas memórias, isso é fascinante, mas eu comparei somente as duas funções, sem a main, acredito que depois das otimizações, como você mesmo disse, esse gerenciamento do array faça diferença. Sendo assim a possibilidade do compilador que eu mencionei não faz sentido.

    • @bcsanches
      @bcsanches 7 місяців тому

      ​@@Prescott2400-my6dinão faz sentido,, na versão com array o compilador deveria simplesmente passar o ponteiro também, qualquer compilador faria isso.

    • @naldin007
      @naldin007 7 місяців тому

      @@Prescott2400-my6diParabéns pelo complemento da aula, vim aqui perguntar ou sugerir exatamente isso, o porque fica mais lento. Obrigado pela explicação.

    • @rafaelsampaio5793
      @rafaelsampaio5793 7 місяців тому +1

      @@naldin007 alguns dias atrás eu pedi pra produção reproduzir um .hex de um micro que peguei como base de um projeto meu, aquele .hex demorava 1,30s para fazer a gravação. O diaque gerei .hex pelo o compilar e direcionado o endereço de memoria do inicio ao fim, o processo da produção foi 10s para 3s. Acho que os ponteiors de memoria é valido SIM. isso me aconteceu com STM32

  • @Fernando_S
    @Fernando_S 7 місяців тому +3

    Muito bom! Ótima explicação! E o seu método para visualizar o tempo de execução foi simples e eficaz! Na minha opinião, ponteiros são muito úteis na otimização de programas, mas só depois que você domina o uso. Tem que saber exatamente o que está fazendo. Tanto que algumas linguagens aboliram o uso explícito de ponteiros, como Java, C# e Python, porque como o ponteiro literalmente aponta para o endereço de memória de outra variável para ler/escrever seu conteúdo, se por um erro do programa o ponteiro apontar para o endereço errado, vai mexer onde não deve resultando em problemas. Em programas Windows isso geralmente resulta na tela azul (BSOD), trava o computador e a única solução é reiniciar o Windows. Em microcontroladores, um erro de violação de acesso de memória por uso de ponteiros pode causar falhas aparentemente aleatórias e travamentos inesperados, visto que (geralmente) não há sistema operacional para gerenciar os recursos da máquina. O uso do watchdog timer é um aliado nesses casos.

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Obrigado Fernando! Muito bem observado, o uso dos ponteiros deve ser consciente e com cautela por estas razões.

    • @rafaelsampaio5793
      @rafaelsampaio5793 7 місяців тому

      gostei.... é interressante demais o assunto, principalmente para os amantes de arduino UNO/derivados. Isso pode salvar muitos projetos existente

  • @douggtr4151
    @douggtr4151 7 місяців тому +1

    Excelente vídeo, mestre!

  • @malthusgalvao3825
    @malthusgalvao3825 7 місяців тому

    Que aula bacana. Obrigado.

  • @matheussteinmetz
    @matheussteinmetz 7 місяців тому

    Que aula legal

  • @musicaplena4164
    @musicaplena4164 7 місяців тому

    Concordo, ponteiros são excelentes, quando se deseja agilidade, inclusive. Vale lembrar que utilizar variáveis como bits de sinalização, também aumenta a eficiência.

  • @joaopagotto
    @joaopagotto 7 місяців тому

    Grande Aula !! Dá pra otimizar ainda mais esta operação:
    int sum_array_ptr(int * ptr, int size)
    {
    int sum = 0;
    while ( size ) {
    sum += *ptr++;
    size--;
    }
    return sum;
    }

  • @silviosilva2717
    @silviosilva2717 7 місяців тому +1

    Excelente review!

  • @ronielypatriota5848
    @ronielypatriota5848 7 місяців тому +1

    Comprei o curso esp 32....❤

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Excelente! Vai gostar bastante, bons estudos e sucesso!

  • @AntonioQuevedo
    @AntonioQuevedo 7 місяців тому +2

    Existe a linguagem C e existe o resto... Para microcontroladores, não há nada melhor que os ponteiros, pois na maioria das arquiteturas os registradores dos periféricos são mapeados em memória. Para acessar o endereço explícito, nada melhor do que um ponteiro. Além disso, como os registradores de um dado periférico costumam estar em endereços contíguos, podemos configurar múltiplos registradores apenas avançando o ponteiro.

  • @emersonsales5016
    @emersonsales5016 4 місяці тому

    Esse ganho de performance aparentemente pequeno faz muita diferença em softwares maiores.
    Sou fã da Línguagem C.
    Eu estou acostumado com linguagens de programação interpretadas, mas também estou investindo tempo na linguagem C. Eu sou fascinado por eficiência, e gosto da ideia de trabalhar mais próximo do Hardware, diferente do que acontece com Python, Java e Kotlin (que é a linguagem que eu estudo em paralelo a linguagem C atualmente, para apps Android).
    Ótimo video.

    • @canalwrkits
      @canalwrkits  4 місяці тому

      Valeu Emerson! Não sei se já fez, mas considere nosso curso Definitivo de C, vai aprender muito e de forma rápida: go.hotmart.com/N48026554Y

  • @dudasertorio
    @dudasertorio 7 місяців тому +1

    Excelente !!!

  • @aguivone
    @aguivone 7 місяців тому

    Mas o compilador e o modelo de microcontrolador também pode te dar resultados diferentes.

  • @leandrocruz6621
    @leandrocruz6621 7 місяців тому +1

    Perfeito

  • @willian8615
    @willian8615 3 місяці тому

    muito interessante

  • @brunonovais8801
    @brunonovais8801 7 місяців тому

    agora tem que fazer um speedrun de quantos segundos leva até conseguir colocar uma falha de segurança no sistema sem o intuito de causar falha de segurança.

  • @kalangototal
    @kalangototal 7 місяців тому

    Eu gostei, eu ja sou um fã de ambas C e C++, como diria o Sr Bjourne... C com classes...
    são coisas assim que mostram o potencial da linguagem em si (eu uso ambas, e gosto de ambas).
    Muito bom, infelizmente vivemos em um mundo onde empresas e pessoas prezam pelo lucro e praticidade, e não pela eficiência (me corrijam se eu estiver errado).
    Muito bom.

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Perfeitamente, o Bjourne originalmente batizou C++ como "C com Classe", bem lembrado hehe. Acredito que consigamos buscar lucro e praticidade ainda nos dias de hoje com C/C++;

    • @kalangototal
      @kalangototal 7 місяців тому

      @@canalwrkits Sim, exatamente, infelizmente o grande problema é que as empresas (não são todas, claro, mas infelizmente a maior parte do mercado é assim)
      Exigem Python, Javascript, Java, C#, nada contra essas ferramentas e linguagens, mas as empresas nos dias de hoje, querem agilidade e praticidade, então... Como C e C++ é para programadores raíz, e o mercado de certa forma é nutella, não quer perder tempo e ja partem para algo mais prático para produzir...
      Mas esse prático, sacrifica a base para o entendimento das funções, e demais assuntos como Otimização de código e tudo mais.
      Coisa que o C e C++ aborda e ensina muito bem.
      Eu até comentei isso com um outro colega aqui, o Judson Santiago (Professor de C++), o foco dele é Interfaces gráficas e jogos.
      C e C++ basicamente são a base de tudo o que temos hoje, programação orientada a objetos, programação procedural, paradigmas, etc... mas a turma hoje em dia, não sabem disso, é complicado.

  • @JhonatanGabriel-j9c
    @JhonatanGabriel-j9c 2 місяці тому

    Vlw

  • @FabioRossiniSluzala
    @FabioRossiniSluzala 7 місяців тому +1

    Quais flags de otimização para o compilador foram usadas para gerar o binário enviado ao microcontrolador? Qual a versão do GCC usado para o microcontrolador?

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      O MikroC é um compilador proprietário desenvolvido pela MikroElektronika especificamente para programação em linguagem C para microcontroladores PIC da Microchip. O MikroC Pro for PIC possui sua própria ferramenta de compilação e não depende do GCC para gerar código executável para os dispositivos PIC.

    • @FabioRossiniSluzala
      @FabioRossiniSluzala 7 місяців тому

      @@canalwrkits obrigado 😄

  • @danielgoldackertec.emeletr6737
    @danielgoldackertec.emeletr6737 7 місяців тому +1

    Gostei ... um abraço

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Valeu Daniel! Abraço!

  • @GMP93
    @GMP93 7 місяців тому

    Pq precisa primeiro gerar um assembly? Não pode compilar direto com o gcc e executar?

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Pode também Gustavo. Eu quis demonstrar como gera o Assembly para aqueles que quiserem também analisar o código em baixo nível.

  • @PedroHenrique-us5ks
    @PedroHenrique-us5ks 7 місяців тому +1

    Bom vídeo mas fiquei curioso para saber como o fato de ter um pulo condicional (else) no código afetou os resultados. Seria legal ver o mesmo exemplo mas usando dessa vez duas versões do código diferentes

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Obrigado Pedro! Se você está se referindo ao if/else do começo, simplesmente fazemos a seleção da função utilizada. if verdadeiro, usamos a função sem ponteiros, if falsa processa o else e usamos a versão com ponteiros.

  • @luisfransis232
    @luisfransis232 7 місяців тому +2

    cara como está aí o seu estado tô preocupado com vocês.

  • @conserteseuseletrodomésticos
    @conserteseuseletrodomésticos 7 місяців тому

    Top sua aula professor!!!

  • @TulhoKay
    @TulhoKay 7 місяців тому +1

    Mano tras mais conteúdo disso. Eu vejo gente falando que ponteiros não tem tanta necessidade de aprender. Pessoalmente venho criando mais intimidade com c e c++. Eu vi como alguns codigos e jogos feito praticamente com isso são leve e poderosos. Engines com graficos surreais gastando alguns mb de ram e gpu trabalhando praticamente com folga. Claro que é um desafio imerso fazer um jogo inteiro. Claro. To visando aprender para contribuír com projetos opensource voltado a pesquisas científicas e ferramentas de uso geral. Krita por exemplo

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Obrigado! Traremos sim. Recomendo bastante nossos cursos de C/C++ para você que quer se profissionalizar. Dê uma olhada em wrkits.com.br/cursos

  • @mhackersoftware7224
    @mhackersoftware7224 7 місяців тому

    Bom vídeo. Porém este exemplo é específico (acesso sequencial aos dados), o resultado é distinto pois se está comparado um acesso sequencial (com ponteiros) e um acesso aleatório (com variáveis). Lembrando que uma das principais características da "liguagem C" é o tratamento interno das variáveis como ponteiros. Uma comparação correta seria comparar uma rotina de acesso aleatório utilizando ponteiros e variáveis (duas abordagens sobre a mesma questão buscada).

    • @bcsanches
      @bcsanches 7 місяців тому

      O acesso da array também é sequencial e qualquer compilador moderno hoje detecta isso e tira proveito disso.

  • @dfeprado
    @dfeprado 7 місяців тому +1

    Estranho, pois em C uma função que recebe um parâmetro int array[] é a mesma coisa que uma que recebe um argumento int *array. Essa diferença deve ser por causa do compilador, pois as duas formas são iguais.

    • @bcsanches
      @bcsanches 7 місяців тому

      Exatamente. Qualquer compilador hoje geraria o mesmo código.

  • @gilbertolameiro5648
    @gilbertolameiro5648 7 місяців тому +1

    SUPER LIKE

  • @vitorsiqueira7306
    @vitorsiqueira7306 7 місяців тому +1

    Bem legal! Muito legal ter demonstrado no osciloscópio. Mas corrija-me se estiver equivocado pois sou novato em C.
    Se houver algum erro na condição de fim do looping, você pode acabar acessando o valor de outra variável (ex: suponhamos que você calculou o término do array equivocadamente, errado por 1 a mais). E se for uma função que altere valores (não apenas leia) isso pode ser ainda mais arriscado
    Estou correto em pensar que ao mesmo tempo poderoso e otimizador, precisa ter cuidado com o uso de ponteiros?

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Isso mesmo Vitor. Devemos usar ponteiros com cautela.

  • @laneletrica7089
    @laneletrica7089 3 місяці тому

    Qual simulador pra simular programas em C?

  • @eduardo-ono
    @eduardo-ono 7 місяців тому

    Olá Prof. Wagner, tudo bem? Grato pelo vídeo e espero que essa situação no RS melhore o mais rápido possível.
    Também sou professor de programação em linguagem C e sempre considerei "array[i]" equivalente a "*(array + i)", mesmo sendo os códigos de máquina gerados ligeiramente diferentes. Nesse vídeo, fiquei curioso se, na instrução "for" da função "sum_array_ptr", "sum += *(ptr + i);" teria o mesmo desempenho que "sum += *ptr; ptr++;" em microcontroladores. Outra dúvida: Haveria ganho ao substituir a instrução "register int i;" por "register int *ptr = array;" conforme o código seguinte?
    int sum_array_ptr(int *array, int size)
    {
    int sum = 0;
    register int *ptr = array;
    int *ptr_final = ptr + size;
    while (ptr < ptr_final)
    {
    sum += *ptr;
    ptr++;
    }
    return sum;
    }
    Abs.

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      sum += *(ptr + i);: Nesta instrução, você está acessando o valor no endereço apontado por ptr + i, onde i é um contador que aumenta a cada iteração do loop. Isso significa que, a cada iteração, o processador precisa calcular o endereço que está i posições à frente de ptr, o que pode exigir operações adicionais de adição e desreferenciação de ponteiro. Essas operações extras podem afetar o desempenho em microcontroladores, especialmente se a otimização do compilador não conseguir simplificar essas operações.
      sum += *ptr; ptr++;: Nesta instrução, você simplesmente acessa o valor apontado por ptr e, em seguida, incrementa o ponteiro ptr. Esta abordagem pode ser mais eficiente em microcontroladores, pois não envolve cálculos adicionais de endereço a cada iteração. Apenas a desreferenciação do ponteiro e o incremento do ponteiro são necessários.
      Na instrução sum += *ptr; ptr++; o desempenho é ligeiramente melhor, pois simplesmente acessamos o valor apontado por ptr e, em seguida, incrementa o ponteiro ptr. Em sum += *(ptr + i); você está acessando o valor no endereço apontado por ptr + i, onde i é um contador que aumenta a cada iteração do loop. Isso significa que, a cada iteração, o processador precisa calcular o endereço que está i posições à frente de ptr, o que pode exigir operações adicionais de adição.
      Em sua outra dúvida, não há ganho em substituir register int i; por register int *ptr = array; no seu código.
      abs!

  • @GMP93
    @GMP93 7 місяців тому

    Esse vídeo me fez passar a última hora estudando ponteiros em C. No meio do meu estudo me deparei com a seguinte afirmação: "A indexação array[i] é traduzida pelo compilador em aritmética de ponteiros nos bastidores."
    Baseado nessa informação e no seus 2 códigos, um percorrendo o array por indexação e outro com ponteiros, o compilador não traduziria ambos para as mesmas instruções? Você respondeu isso no vídeo, mostrando que com ponteiros o processamento é mais rápido, e foi ai que minha cabeça explodiu, POR QUÊ é mais rápido!? 🤣

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Sua constatação foi excelente Gustavo e meu objetivo com o vídeo foi atingido. Fazer a galera estudar mais os ponteiros. Vou esclarecer a questão para você. Compiladores modernos são muito eficientes e podem otimizar muitas dessas diferenças. No entanto, a forma com ponteiros é muitas vezes mais simples de otimizar pelo compilador, já que as operações são mais diretas e há menos cálculos repetidos. O acesso sequencial direto que o código com ponteiros provê tende a ser melhor preditível do que os cálculos de endereços repetidos.
      O que ocorre é que ao usar um compilador bastante eficiente em otimizações, geralmente temos a otimização correta em ambos os casos, como você observou. Na prática, apliquei os testes em MikroC, que apresenta um compilador proprietário dedicado a arquiteturas reduzidas, que são os microcontroladores, o que não gerou tal otimização.

    • @GMP93
      @GMP93 7 місяців тому

      @@canalwrkits perfeito. Obrigado

  • @juniorlucival
    @juniorlucival 7 місяців тому

    Ponteiros são ótimos mas existe ressalvas, Ponteiros deixam o código mais complexo de leitura e manutenção. Ponteiros não possui proteção para acesso a uma memória nula isso pode quebrar o código. Ponteiro podem apontar para endereços de memórias livres(endereços de memória que não foram alocadas) causando quebra do código. Ponteiros não são mapeados, ou seja, você pode perfeitamente acessar um endereço de memoria que nao existe e isso quebra o código em tempo de execução. Ponteiros a maior parte dos erros dos ponteiros são descobertos apenas em tempo de execução. Ponteiros que alocam memória ai que a coisa pode ficar feia mesmo. Tenho estudado sobre hackeamento de sistemas embarcados, e softwares com ponteiros são mais fáceis de ler o assembler e hackear. No meu modo de programar utilizo ponteiro apenas em situações de eficiência de busca e calculo, no processo normal do codigo não utilizo, mesclar as dois paradigmas na minha visão é o ideal, cada qual na sua finalidade.

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Ótimas observações Junior! É o que recomendo também.

  • @bresodev1697
    @bresodev1697 7 місяців тому

    Uma pergunta, pq usar "sizeof(arr) / sizeof(arr[0]) ??
    Nao seria mais facil usar so o sizeof(arr) ou sizeof(arr) -1?
    Ou muda alguma coisa nesse contexto?

    • @dfeprado
      @dfeprado 7 місяців тому

      Em C, sizeof() de um array retorna o total de bytes dele. Daí você tem que dividir pelo total de bytes do tipo de variável que ele armazena para obter o total de elementos do array.
      Exemplo: sizeof(arr)/sizeof(arr[0])
      Ou, nesse caso: sizeof(arr)/sizeof(int)

    • @bresodev1697
      @bresodev1697 7 місяців тому

      ​@@dfepradointeressante, eu só mexia com C++ e lá é diferente, bom saber, obrigado

  • @andersoncdz1
    @andersoncdz1 7 місяців тому

    Qual vc recomenda, c ou c++? Excelente vídeo

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Muito obrigado Anderson! Recomendo fortemente ambas as linguagens. Para começar, Linguagem C. Temos o curso Definitivo, é o mais completo do mercado: go.hotmart.com/N48026554Y
      Bons estudos!

    • @andersoncdz1
      @andersoncdz1 7 місяців тому

      @@canalwrkits Muito obrigado pela resposta!!!!

  • @PauloHenrique-hg7iw
    @PauloHenrique-hg7iw 7 місяців тому

    e a segurança se não apontar direito ?

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Usemos ponteiros com cautela.

    • @PauloHenrique-hg7iw
      @PauloHenrique-hg7iw 7 місяців тому

      @@canalwrkits teria como repetir o teste porem aplicando as correções de segurança pra ver quantos ms eles comem ?

  • @pantaneiroservicerenifranc9169
    @pantaneiroservicerenifranc9169 7 місяців тому +1

    👏👏👏👏👏👏👏👏👏👏

  • @noslidemais
    @noslidemais 7 місяців тому +1

  • @luisfransis232
    @luisfransis232 7 місяців тому +1

    seu pai tá bem?

    • @canalwrkits
      @canalwrkits  7 місяців тому

      Sim. Apenas danos materiais severos. A casa inteira e metade da empresa.

  • @alessonalves4023
    @alessonalves4023 7 місяців тому

    Como funciona, Professor? Estou querendo adquirir o curso de Linguagem C.

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Acesse o link: go.hotmart.com/N48026554Y e faça a aquisição.
      Ao confirmar o pagamento, você receberá o link de acesso ao curso por email. Então é só acompanhar as aulas. O acesso é vitalício. Aguardo você no curso!

    • @alessonalves4023
      @alessonalves4023 7 місяців тому

      @@canalwrkits Obrigado

  • @oficinarscarservice
    @oficinarscarservice 7 місяців тому

    Fantástico!
    Aqui se mata a cobra e se mostra o ponteiro! kkkkkkkk.
    Valeu demais!

  • @HenriqueVilelaMusic
    @HenriqueVilelaMusic 7 місяців тому

    Quase 20% mais eficiente!!

  • @AnselmoTecEletrica
    @AnselmoTecEletrica 7 місяців тому +2

    cheguei. like 1

  • @anacletomarcal1313
    @anacletomarcal1313 7 місяців тому +1

    :)

  • @kelverton.cost031
    @kelverton.cost031 7 місяців тому

    E a casa branca queimando C/C++... Rapaz, é de lascar.

    • @canalwrkits
      @canalwrkits  7 місяців тому +1

      Sensacionalismo. C/C++ são indestrutíveis.

    • @kelverton.cost031
      @kelverton.cost031 7 місяців тому

      @@canalwrkits Creio que sim, mudança na administração pública e querem pagar de modernões(Rust é a linguagem "queer", é cada uma viu), muita besteira num documento só.