00:00:00
Fala galera beleza aqui é o Wagner Ramo
00:00:02
do WR kits Channel e este é mais um
00:00:04
vídeo em parceria com a Raisa eu tenho
00:00:07
certeza que Você clicou nesse vídeo
00:00:09
pensando que não iria entender ponteiros
00:00:11
na linguagem si mesmo assim mas eu
00:00:14
garanto para você prestando bastante
00:00:15
atenção nesse conteúdo vou te ajudar a
00:00:19
entender de uma vez por todas os
00:00:20
ponteiros na linguagens C que metem medo
00:00:23
em muita gente se você já domina os
00:00:26
ponteiros sempre é bom aquela revisão
00:00:28
Então já deixa o seu like se inscreva
00:00:30
compartilhe com todos que estão
00:00:32
estudando linguagem C ponteiros são
00:00:34
muito úteis para os nossos projetos em
00:00:37
programação vídeo que eu amo
00:00:39
oferecimento da
00:00:40
raisa.com.br para o seu laboratório de
00:00:44
eletrônica acesse Raisa e utilize o
00:00:46
cupom WR kits para 7% de desconto em
00:00:50
toda a loja Vamos para o vídeo de hoje
00:00:52
segura aí
00:00:56
Eu estou aqui no code Blocks você pode
00:00:59
utilizar a ideia que você quiser para
00:01:01
trabalhar com linguagem C e o compilador
00:01:03
desejado então code Blox é um gratuito
00:01:05
que eu recomendo também temos o nosso
00:01:07
curso definitivo de linguagem C onde
00:01:10
exploramos tudo sobre ponteiros e toda a
00:01:12
linguagem C se você tem interesse em
00:01:15
investir neste conhecimento eu deixo o
00:01:17
link aqui para você também e no
00:01:19
comentário fixado Tá certo vamos começar
00:01:21
declarando uma variável do tipo inteiro
00:01:23
chamar de var e atribuir 15 a ela eu vou
00:01:28
trabalhar com o tipo inteiro mas sabemos
00:01:30
que os ponteiros podem ser utilizados
00:01:32
com os diversos tipos de dados da
00:01:34
linguagem C um ponteiro é um apontador
00:01:38
para endereço de memória basicamente
00:01:40
isso e ele de fato ele é uma variável
00:01:43
que pode ser utilizada para conter o
00:01:45
endereço de memória e com isso
00:01:47
conseguimos atualizar conteúdos destes
00:01:50
endereços de forma indireta já vamos
00:01:54
entender isso aqui na prática Primeiro
00:01:56
vamos ver aqui o conteúdo de vara eu
00:02:00
posso imprimir esse conteúdo utilizando
00:02:03
printf que todo mundo já conhece também
00:02:06
tá e o conteúdo 15 nenhuma novidade até
00:02:10
aí eu também posso verificar o endereço
00:02:13
de Vale
00:02:15
endereço desta variável utilizo
00:02:18
percentual p e utilizo o e comercial
00:02:24
na frente do nome da variável Então
00:02:27
compilando veja que não temos erros nem
00:02:29
avisos aqui rodando nós vemos o conteúdo
00:02:34
de varcing e eu vejo o endereço que é
00:02:38
este valor em hexadecimal aqui 6 0 fe1c
00:02:43
você não precisa se preocupar com este
00:02:45
valor apenas entender que esta variável
00:02:49
inteira do tipo vá ela existe em um
00:02:53
determinado endereço físico da memória
00:02:55
do computador e nesse endereço físico
00:02:58
armazenamos o valor 15 é isso que você
00:03:01
tem que entender
00:03:03
agora vamos trabalhar com ponteiro como
00:03:06
declaramos ponteiros em ser utilizando o
00:03:09
asterisco na frente do nome da variável
00:03:11
eu vou chamar PTR
00:03:14
E aí eu já posso utilizar este ponteiro
00:03:17
para apontar para o endereço desta
00:03:20
variável que criamos aqui como eu faço
00:03:22
isso eu atribuo PTR
00:03:25
ao endereço da minha variável Então o
00:03:30
que fizemos até aqui eu vou ilustrar com
00:03:32
esta pequena tabela
00:03:34
nela eu coloquei endereços partindo de
00:03:37
oito mil Então 8.8001 até 8006 mas
00:03:41
entenda que é algo contínuo e esses
00:03:44
valores são apenas para ilustrar aqui de
00:03:47
novo você não precisa se preocupar com o
00:03:50
valor exato dos determinados endereços
00:03:52
Então vamos supor que declaramos aquele
00:03:55
ponteiro chamado PTR e a nossa variável
00:03:58
a nossa variável vá vamos supor que foi
00:04:00
declarada aqui armazenada no endereço
00:04:03
8001 e dentro dela existe o valor 15 que
00:04:07
salvamos nela PTR que eu declarei vamos
00:04:10
supor que foi salvo no endereço 8 004
00:04:15
perfeito Qual é o conteúdo de PTR o
00:04:20
conteúdo de PTR é o endereço da minha
00:04:23
variável vá que neste caso aqui é 8001
00:04:26
estamos ilustrando com 8001 aqui nesta
00:04:29
tabela só para ficar mais simples de
00:04:32
entender então até aqui nós temos isso
00:04:34
de fato no nosso projeto então
00:04:37
observando aqui eu vou dar printfs
00:04:43
para vermos agora
00:04:45
o conteúdo
00:04:49
vou chamar de conteúdo
00:04:53
apontado por PTR então o conteúdo
00:04:57
apontado pelo meu ponteiro
00:05:01
é o asterisco PTR que vai ser o que vai
00:05:07
ser 15 nós vamos visualizar 15 aqui com
00:05:11
este print F Exatamente isso e se eu
00:05:15
imprimir aqui o endereço apontado
00:05:21
por PTR eu vou imprimir o próprio PTR
00:05:27
Onde vamos visualizar o endereço de
00:05:32
se eu compilar aqui não temos erros nem
00:05:34
avisos se eu rodar nós vamos ver aí os
00:05:37
valores que eu estou prevendo então o
00:05:41
conteúdo de vara 15 que a minha variável
00:05:43
o endereço é 60
00:05:47
PTR está apontando para var para o
00:05:51
endereço de var que contém 15 logo
00:05:54
quando eu utilizo asterisco eu estou
00:05:57
utilizando o conteúdo do endereço
00:06:01
apontado por PTR pelo ponteiro então o
00:06:05
apontado por PTR falando de forma
00:06:08
resumida é 15 que é o conteúdo aqui de
00:06:12
vara e veja que o endereço
00:06:14
apontado por PTR é igual aqui
00:06:18
6 0 f1c que é o endereço de var
00:06:22
interessante demais isso se eu imprimir
00:06:25
aqui agora o endereço do próprio
00:06:28
endereço do PTR
00:06:35
utilizo também percentual P contra barra
00:06:38
n para nova linha e Comercial PTR aqui
00:06:42
eu vou ver o endereço
00:06:44
do meu ponteiro então na memória o
00:06:47
endereço existe o ponteiro existe no
00:06:49
endereço 6 0 F18
00:06:52
compreendeu então
00:06:54
assim eu consigo deduzir que os
00:06:57
ponteiros quando até vou anotar aqui o
00:07:01
resumo para você
00:07:04
para você não esquecer mais quando eu
00:07:07
utilizo asterisco então o asterisco PTR
00:07:11
significa
00:07:13
que
00:07:15
o
00:07:16
apontado por lembre sempre
00:07:20
dessas palavras aí você vai fixar o
00:07:24
apontado por significa o quê
00:07:27
o conteúdo do endereço apontado por
00:07:31
expandindo essa afirmação Então aqui tem
00:07:34
o conteúdo do endereço da variável
00:07:40
que PTR aponta
00:07:43
quando eu utilizo o asterisco quando eu
00:07:45
utilizo apenas PTR
00:07:49
eu vou ver o endereço
00:07:51
da variável o próprio endereço é aquele
00:07:54
local onde a variável está armazenada e
00:07:58
quando eu utilizar o e Comercial PTR
00:08:01
Eu Verei o endereço
00:08:07
do ponteiro ou seja o endereço de PTR
00:08:11
lembre sempre disso então olha só o que
00:08:14
eu posso fazer agora eu vou imprimir
00:08:17
tudo de novo aqui
00:08:19
logo depois
00:08:25
Vou dar duas novas linhas aqui para
00:08:27
separar as informações só que antes de
00:08:30
imprimir tudo de novo eu vou dizer que o
00:08:33
apontado por agora recebe o valor 73 por
00:08:38
exemplo
00:08:39
Olha o que eu estou fazendo aqui sempre
00:08:42
que utilizamos o asterisco na frente
00:08:43
quando estou trabalhando com ponteiro
00:08:46
estou dizendo que é o conteúdo da
00:08:49
variável apontada pelo ponteiro o
00:08:52
apontado por vai receber 73
00:08:58
significa que eu estou utilizando
00:09:00
ponteiro para atualizar o conteúdo do
00:09:04
endereço onde Vá onde a minha variável
00:09:06
está ou seja aqui no conteúdo de vácuo
00:09:10
nós veremos 73 agora também então Olha
00:09:13
só vamos fechar aqui com o Pilar de novo
00:09:18
veja que não temos erros nem avisos
00:09:20
rodando nós vamos ter o resultado aqui
00:09:23
esperado
00:09:25
primeiro tínhamos 15 foi valor de
00:09:28
inicialização e depois disso
00:09:31
o próprio conteúdo de várzem que eu
00:09:34
tenha atribuído nada a ela mas sim ao
00:09:37
ponteiro que aponta para o seu endereço
00:09:39
foi atualizado para 73 Então tá aqui 73
00:09:44
de novo apontado por PTR 73 e olha só os
00:09:48
endereços os endereços se mantém nos
00:09:52
mesmos após a sua instrução da linha 17
00:09:56
aqui no nosso mapa o que muda aqui não
00:10:00
são os endereços apenas o conteúdo
00:10:03
divar que passa a ser 73 tá entendido
00:10:07
isso
00:10:09
basicamente assim que funcionam os
00:10:11
ponteiros e eles são bastante úteis
00:10:13
quando eu quero fazer uma atualização
00:10:15
indireta por exemplo eu vou declarar
00:10:17
aqui uma função que eu vou chamar de
00:10:19
display eu vou passar a variável e
00:10:22
passar o ponteiro para ela eu quero
00:10:25
apenas utilizar estas impressões aqui
00:10:28
dentro
00:10:30
desta função
00:10:32
aí você já vê como nós passamos os
00:10:35
ponteiros para uma função então tiverem
00:10:38
PTR
00:10:41
aqui eu já vou copiar
00:10:46
este Sprint Apps
00:10:49
e está pronto
00:10:52
é isso que eu quero mostrar o endereço
00:10:53
aqui do ponteiro eu vou manter vou
00:10:56
manter assim e agora eu posso só chamar
00:10:59
a minha função aqui display onde eu
00:11:02
passo o ar e eu passo o PTR veja que
00:11:06
quando eu trabalho com PTR eu já estou
00:11:09
trabalhando com o próprio endereço por
00:11:11
esse motivo
00:11:14
eu utilizo apenas a descrição PTR
00:11:19
se eu compilar aqui
00:11:22
sem erros e sem avisos seu rodar nós
00:11:27
veremos exatamente o que estávamos vendo
00:11:29
antes os endereços mudaram seus valores
00:11:33
agora porque estou trabalhando dentro de
00:11:35
uma função e a função também tem o
00:11:38
endereço diferente na memória ela inicia
00:11:40
essa função display ela vai iniciar
00:11:43
endereço diferente da memória distinto
00:11:46
deste da minha função principal mas de
00:11:49
novo o número específico dos endereços
00:11:52
não é importante é importante que você
00:11:53
tenha em mente o que acontece quando eu
00:11:56
trabalho com asterisco na frente do
00:11:58
ponteiro o próprio nome do ponteiro ou
00:12:02
com o eco comercial que é o endereço do
00:12:04
ponteiro agora um outro recurso que eu
00:12:07
vou chamar aqui de updates de
00:12:09
atualização vamos supor que eu queira
00:12:11
atualizar esta variável vá na minha
00:12:15
função por algum motivo específico
00:12:17
declara um ponteiro aqui vou chamar de p
00:12:20
então aqui
00:12:23
que eu vou
00:12:26
trabalhar com ela aqui embaixo
00:12:28
vai
00:12:29
atualizar a minha variável então
00:12:32
apontado por ter asterisco P vamos supor
00:12:37
que eu quero incrementar em uma unidade
00:12:38
então recebe ele próprio mais um
00:12:44
e olha só o que vai acontecer agora até
00:12:48
aqui tudo certo ao invés de utilizar
00:12:51
este ponteiro aqui eu poderia utilizar
00:12:54
update se eu passar o endereço da minha
00:12:59
variável para função update eu estarei
00:13:02
atualizando esta variável da função
00:13:05
principal dentro desta função aqui
00:13:09
de modo que depois na próxima impressão
00:13:12
veremos o conteúdo
00:13:14
incrementado em um ou seja 16 será que é
00:13:19
isso mesmo aqui
00:13:22
visualizando exatamente o que previmos
00:13:25
primeiro 15 e depois o apontado por PTR
00:13:29
recebe 16
00:13:32
legal demais veja que atualizou aqui
00:13:34
também ó
00:13:36
então eu posso trabalhar assim com os
00:13:39
ponteiros os ponteiros também são os as
00:13:43
variáveis que apontam para o primeiro
00:13:46
endereço de reis e streams na linguagem
00:13:49
C sabemos disso podemos utilizar isso ao
00:13:52
nosso favor varrendo Strings varrendo
00:13:56
vetores ou orways ou
00:14:00
Ray smootidimensionais trabalhando assim
00:14:03
com os ponteiros de forma bastante
00:14:05
eficiente portanto é assim que você
00:14:09
trabalha com os ponteiros na linguagem C
00:14:12
existem muitas Outras aplicações que não
00:14:15
tem como se aprofundar aqui em um vídeo
00:14:17
rápido mas eu espero que você tenha
00:14:19
gostado e entendido de forma definitiva
00:14:21
O que são ponteiros e as funções
00:14:23
principais dele e como deles e Como se
00:14:28
comportam em nosso código em nosso
00:14:30
projeto de novo eu vou convidar você
00:14:32
para estudar a linguagem ser a fundo e
00:14:34
completa temos o curso defin é
00:14:37
sensacional tem muito conteúdo hoje você
00:14:41
vai aprender de uma vez por todas toda a
00:14:43
linguagem C Então veja aqui embaixo é um
00:14:47
curso sensacional e para quem tem
00:14:48
interesse eu vou deixar o ciplas Plus
00:14:50
também que é outro curso completo para
00:14:53
você concluímos mais um vídeo em
00:14:55
parceria com a Raisa Obrigado por
00:14:57
assistir acompanhe sempre like no vídeo
00:14:59
maratona o nosso conteúdo aqui no canal
00:15:02
tem mais de 3.700 vídeos para você
00:15:05
conferir Valeu sua audiência um abração
00:15:08
e até o próximo vídeo