o modificador const não permite que o valor de uma variável ou ponteiro seja alterado. const -> constant -> constante const int X = 10 No caso acima a variável X assumirá o valor 10. Caso você tente alterar o valor da variável X um erro ocorrerá
Blz, vou dar uma procurada la. Merece os elogios, e ganhou mais um inscrito, já sei aonde estudar para prova e aprender coisas novas, hehe. Valeu mesmo. Abraz
tem sim cara.. eu não consigo postar links aqui nos comentários..faz assim ali na página principal do canal do em baixo da escrita do nome do canal tem uma lupa.. clica nela e vai te dar a opção de pesquisar.. só jogar vetor ali. tem uma série de 10 vídeos sobre vetores... inicia na aula 22 se não me engano. se não conseguir achar me dá um toque. Flws e obrigado pelo elogio! ;)
tenho uma duvida: o valor de n nao deveria ser 9? porque um vetor de 10 posiçoes vai de 0 a 9, entao se voce fala que o o final vetor e o vetor+n, ele esta apontando para a posiçao 10, que nao existe.
Você tem alguma vídeo aula de Lista Encadeada/Alocação Dinâmica? Estou estudando estrutura de dados na Faculdade e estou usando structs com ponteiros que guardam a posição do elemento anterior (ou do próximo não me lembro), estou usando malloc pra fazer o procedimento de alocação de memória. Se puder me indicar alguma, agradeço. Obrigado pela atenção!
Professor, de uma forma bem resumida a minha duvida, não entendi o comando "const" Poderia dizer a definição dele e pq o Sr. utilizou? Qual seria a diferença se não tivesse utilizado?
Estou com a mesma dúvida da Ana Luisa Carvalho. Vi que ainda não foi respondido, então, vou refazê-la: Se o vetor possui 10 posições (5, 5, 5, 5, 5, 5, 5, 5, 5, 5,) entendo que a última posição não seria 'vetor + n', mas sim 'vetor + (n-1)'. Neste caso o código funcionou mesmo apontando para uma posição inexistente no vetor?
Humm ... acho que entendi porque deu certo ... foi utilizado o sinal de "estritamente menor", o que permite que o ciclo "for" trabalhe do vetor[0] a vetor [9].
sei que faz um tempo, mas ele está acessando o endereço de memoria, e não o valor. Por isso msm n existindo o vetor[10] ele está fazendo uma comparação com o endereço de memoria que vem depois do vetor[9]. Logo, se o endereço do vetor 9 fosse 1000 por exemplo, o do vetor[10] teoricamente seria 1004. Então enquanto o endereco do vetor < 1004 faça o loop
Primeiro, parabéns pela vídeo aula, muito boa. Você poderia me ajudar em uma coisa? Preciso criar um vetor de 100 posições, e ele precisa "auto preencher" sendo que comece com 1 e vá até 100, essa sequencia precisa ser "impressa", consegui fazer isso usando um for com uma variável, mas não estou conseguindo com um vetor, esta imprimindo valores absurdos. Tem alguma aula que eu possa ver que fale sobre isso? Muito obrigado
Por que você declara esse protótipo de função dentro da main ? Se a função já foi criada fora da main, poderíamos chama-la dentro da main sem nenhum problema. Geralmente eu faço assim: int função(); // protótipo int main() { } int função() { corpo da função. }
Crie um programa que contenha um vetor de 10 elementos do tipo int e, também, uma variável ponteiro para int. O programa deverá ler os valores do vetor e exibir esses valores na tela de saída do programa. Mas para isso mostrar os valores, é necessário utilizar o ponteiro que foi criado. É através dele e de um loop que os valores devem ser exibidos.COMO E ESSE LOOP?
Nessa aula observei a seguinte linha de código: int *const finalVetor = vetor + n; Seria equivalente escrever essa linha da maneira abaixo? int const *finalVetor = vetor + n; Eu testei nessa aula as duas maneiras e pelo menos não percebi nenhuma diferença.
Uma dúvida: ponteiros podem ser utilizados em quase todas os casos? Quando alteramos o valor da variável alteramos o seu endereço de memória? Quem souber e poder me ajudar.
Não. Valor é valor. Endereço é endereço. Se vc altera o valor do ponteiro (*ponteiro), você está alterando na verdade o valor da variável para o qual ele aponta.
Tentei implementar o mesmo algoritmo com while e para buscar um valor ao mesmo tempo. (Acho eu que funcionou, haha) #include int somaVetor(int vetor[], const int n, const int p) { int soma = 0; int *const finalVetor = vetor + n; int *ponteiro = vetor; while (ponteiro < finalVetor) { if (*ponteiro == p) { printf("Encontrado o valor %d no endereco %p ", *ponteiro, ponteiro); } soma += *ponteiro; ++ponteiro; } return soma; } int main (void) { int somaVetor(int vetor[], const int n, const int p); int vetor[10] = {5, 5, 5, 5, 5, 5, 5, 3, 5, 5}; printf("Soma = %d ", somaVetor(vetor, 10, 3)); return 0; }
Olá professor, tudo bem? Estou estudando para um concurso, e eu não consigo entender a lógica de utilização de ponteiros nesse programa que caiu na prova: int main() { int vetor [ ] [3] = {1,2,3,4,5,6,7,8,9,10,11,12}; int valor = *(vetor[1]+1)+**(vetor+3); printf("%d", valor); } Se puder me ajudar, agradeço bastante.
Parabéns pelo conteúdo. Excelente didática. 7 anos depois e ainda é um conteúdo muito válido
Opa.. dá uma olhada na aula 68, acho que pode te ajudar.
Eu ainda não falei sobre alocação dinâmica mas está nos planos para aulas futuras.
o modificador const não permite que o valor de uma variável ou ponteiro seja alterado.
const -> constant -> constante
const int X = 10
No caso acima a variável X assumirá o valor 10. Caso você tente alterar o valor da variável X um erro ocorrerá
Finalmente entendi!! Brabo dms! Vlw, professor!
8:48 Vamos dar um "executar" e se deus quiser, vai dar tudo certo aqui.
kkkkkkkkk
eu ri de nervoso nessa parte
Blz, vou dar uma procurada la.
Merece os elogios, e ganhou mais um inscrito, já sei aonde estudar para prova e aprender coisas novas, hehe.
Valeu mesmo.
Abraz
Finalmente consegui entender ponteiros.
Otima aula!
tem sim cara..
eu não consigo postar links aqui nos comentários..faz assim
ali na página principal do canal do em baixo da escrita do nome do canal tem uma lupa.. clica nela e vai te dar a opção de pesquisar.. só jogar vetor ali.
tem uma série de 10 vídeos sobre vetores... inicia na aula 22 se não me engano.
se não conseguir achar me dá um toque.
Flws e obrigado pelo elogio! ;)
Direto ao ponto, sem comentarios !!!
Você é muito bom como professor!
Muito bom, excelente didática.
tenho uma duvida: o valor de n nao deveria ser 9? porque um vetor de 10 posiçoes vai de 0 a 9, entao se voce fala que o o final vetor e o vetor+n, ele esta apontando para a posiçao 10, que nao existe.
Ele teria que usar
salvou minha prova final :D
Ae!
Você tem alguma vídeo aula de Lista Encadeada/Alocação Dinâmica? Estou estudando estrutura de dados na Faculdade e estou usando structs com ponteiros que guardam a posição do elemento anterior (ou do próximo não me lembro), estou usando malloc pra fazer o procedimento de alocação de memória. Se puder me indicar alguma, agradeço. Obrigado pela atenção!
Professor, de uma forma bem resumida a minha duvida, não entendi o comando "const"
Poderia dizer a definição dele e pq o Sr. utilizou? Qual seria a diferença se não tivesse utilizado?
Abriu minha cabeça mas ate q enfim entrou.
Estou com a mesma dúvida da Ana Luisa Carvalho. Vi que ainda não foi respondido, então, vou refazê-la: Se o vetor possui 10 posições (5, 5, 5, 5, 5, 5, 5, 5, 5, 5,) entendo que a última posição não seria 'vetor + n', mas sim 'vetor + (n-1)'. Neste caso o código funcionou mesmo apontando para uma posição inexistente no vetor?
Humm ... acho que entendi porque deu certo ... foi utilizado o sinal de "estritamente menor", o que permite que o ciclo "for" trabalhe do vetor[0] a vetor [9].
sei que faz um tempo, mas ele está acessando o endereço de memoria, e não o valor. Por isso msm n existindo o vetor[10] ele está fazendo uma comparação com o endereço de memoria que vem depois do vetor[9]. Logo, se o endereço do vetor 9 fosse 1000 por exemplo, o do vetor[10] teoricamente seria 1004. Então enquanto o endereco do vetor < 1004 faça o loop
Primeiro, parabéns pela vídeo aula, muito boa.
Você poderia me ajudar em uma coisa? Preciso criar um vetor de 100 posições, e ele precisa "auto preencher" sendo que comece com 1 e vá até 100, essa sequencia precisa ser "impressa", consegui fazer isso usando um for com uma variável, mas não estou conseguindo com um vetor, esta imprimindo valores absurdos.
Tem alguma aula que eu possa ver que fale sobre isso?
Muito obrigado
muito bom.
Por que você declara esse protótipo de função dentro da main ? Se a função já foi criada fora da main, poderíamos chama-la dentro da main sem nenhum problema. Geralmente eu faço assim:
int função(); // protótipo
int main()
{
}
int função()
{
corpo da função.
}
Crie um programa que contenha um vetor de 10 elementos do tipo int e, também, uma variável ponteiro para int.
O programa deverá ler os valores do vetor e exibir esses valores na tela de saída do programa. Mas para isso mostrar os valores, é necessário utilizar o ponteiro que foi criado. É através dele e de um loop que os valores devem ser exibidos.COMO E ESSE LOOP?
Nessa aula observei a seguinte linha de código:
int *const finalVetor = vetor + n;
Seria equivalente escrever essa linha da maneira abaixo?
int const *finalVetor = vetor + n;
Eu testei nessa aula as duas maneiras e pelo menos não percebi nenhuma diferença.
Uma dúvida: ponteiros podem ser utilizados em quase todas os casos? Quando alteramos o valor da variável alteramos o seu endereço de memória? Quem souber e poder me ajudar.
Não. Valor é valor. Endereço é endereço. Se vc altera o valor do ponteiro (*ponteiro), você está alterando na verdade o valor da variável para o qual ele aponta.
Tentei implementar o mesmo algoritmo com while e para buscar um valor ao mesmo tempo. (Acho eu que funcionou, haha)
#include
int somaVetor(int vetor[], const int n, const int p) {
int soma = 0;
int *const finalVetor = vetor + n;
int *ponteiro = vetor;
while (ponteiro < finalVetor) {
if (*ponteiro == p) {
printf("Encontrado o valor %d no endereco %p
", *ponteiro, ponteiro);
}
soma += *ponteiro;
++ponteiro;
}
return soma;
}
int main (void) {
int somaVetor(int vetor[], const int n, const int p);
int vetor[10] = {5, 5, 5, 5, 5, 5, 5, 3, 5, 5};
printf("Soma = %d
", somaVetor(vetor, 10, 3));
return 0;
}
Olá professor, tudo bem? Estou estudando para um concurso, e eu não consigo entender a lógica de utilização de ponteiros nesse programa que caiu na prova:
int main() {
int vetor [ ] [3] = {1,2,3,4,5,6,7,8,9,10,11,12};
int valor = *(vetor[1]+1)+**(vetor+3);
printf("%d", valor);
}
Se puder me ajudar, agradeço bastante.
Acho q dar 7
Não intendo porque tem que declarar a função dentro do int main()
Ele explica na aulas sobre funções
m0ng Hum... valeu
Qual a diferença de usar vetor c ponteiro na função e de não usar? Vetor normal na função funciona também ué.