Cara você é foda,explica melhor que meu professor da faculdade de Estrutura de Dados,me salvou de muitas dúvidas que tinha sobre essa matéria,um amigo me indicou seu canal,e de fato você é ótimo!. Valeu.
Em c tambem tem como trocar os valores tal como voce feis, mas um pouco diferente, void setVar(int *x, int *y) { *x = 10; *y = 10; } int main() { int a = 20, b = 20; printf("A=%i | B=%i ", a, b); setVar(&a, &b); printf("A=%i | B=%i ", a, b); return 0; }
Duvida! Porque vc usou a sintaxe em C? visto que Passagem por referencia não existe em C? e nesse video estamos se tratando de c++? printf " A=%d | B=%d",a,b)
SUAS AULAS TEM SIDO MUITO ÚTIL AO MEU APRENDIZADO; E GOSTARIA DE LHE PEDIR; SE POSSÍVEL; PARA QUE VOCÊ DISPONIBILIZE UMA NOVA AULA DE EXPLICAÇÃO SOBRE PASSAGEM POR REFERÊNCIA; POIS FIQUEI MUITO CONFUSO; COM ESTA AULA. DESDE JÁ MUITO OBRIGADO E PARABÉNS POR SEU TRABALHO.
Me responde, na passagem por valor, a variável de main altera o valor da variável da função chamada atribuindo seu valor a ela, e na passagem por referência a variável main recebe o valor da variável da da função chamada?.
Porque não utilizou a biblioteca de fluxo iostream ao invés da stdlib.h e stdio.h? A stdlib.h e a stdio.h não são do C? Não são para o uso do printf e do scanf?
ele teria que incluir a biblioteca #include #include using namespace std; nao sei pq ele nao fez isso. eu tambem acho muito mais simples. não sei se ele tem motivos para não incluir essas bibliotecas e comando.
Imagine um salão, tem lá duas pessoas A e B, e nesse salão há um escritório e dentro dele temos gerente X e o presidente y e a porta está fechada, A e B não conseguem ver oque há dentro do "escritório", então X e Y abrem a janela deste comodo usando o operador de endereços(&x, &y) ficando assim: void escritório(conteúdo gerente,conteúdo do presidente) para que A e B possam ver oque ha dentro do comodo. Ao chegar na janela aberta pelo operador &, a pessoa A e a pessoa B conseguem observar o valor que X e Y possuem, e se apropriam dessa informação que é o conteúdo do gerente e do presidente. E assim houve a alteração nos valores armazenados por X e Y com os valores que antes eram somente de A e B. (((((((((((((((((((((((((Se eu entendi errado me digam onde não entendi, estou aprendendo.
Na verdade para da passar por referência em C, mais é mais complicado, ficaria assim: #include #include void altera (int *x, int *y){ *x =5; *y = 20; } int main(int argc, char** argv) { int a, b; a =1; b = 200; altera(&a,&b); printf("A = %d, B = %d",a,b); return (EXIT_SUCCESS); }
Daniel Fabrício Freitas Bom dia! Isso não é passagem por referência. Você está usando ponteiros para simular uma passagem por referência. Funciona, mas são coisas diferentes.
Os parâmetros que foram recebidos na função são ponteiros. Pelo procedimento, primeiramente você declara as variáveis com os seus valores, até aí normal. Porém, no momento da chamada da função, tudo indica que o x e y apontam para o endereço de memória de a e b respectivamente, então é realmente uma passagem por referência. A partir do endereço que eles apontam, podemos trocar os valores de a e b em qualquer lugar no nosso código, mesmo que o ambiente de execução seja destruída depois de executar a função. Os valores ficam armazenados na memória, já trocados, antes de serem destruídos.
Gostei dessa aula assim como de todas as suas aulas. Só tenho um observação a fazer: Você disse que em C nós não temos passagens de parâmetros por referência. Isso não é verdade. Temos passagem de parâmetro por referência e C. Sei que você sabe disso mas você se enganou a dizer isso. Mais uma vez dou meus parabéns pelas suas aulas.
sensacional a simplicidade com que entendi sua explicação. parabéns! ja tinha visto esse assunto e não tinha entendido
Tô amando as aulas, você é demais, professor!
Cara você é foda,explica melhor que meu professor da faculdade de Estrutura de Dados,me salvou de muitas dúvidas que tinha sobre essa matéria,um amigo me indicou seu canal,e de fato você é ótimo!. Valeu.
Melhor professor do TH-cam.. Parabens ai Gilberto!
Fiz questão de logar no TH-cam só pra clicar em Gostei! Valeu.
parabéns, vc é um ótimo professor
obrigado pelos seus vídeos
Em c tambem tem como trocar os valores tal como voce feis, mas um pouco diferente,
void setVar(int *x, int *y) {
*x = 10;
*y = 10;
}
int main() {
int a = 20, b = 20;
printf("A=%i | B=%i
", a, b);
setVar(&a, &b);
printf("A=%i | B=%i
", a, b);
return 0;
}
Duvida! Porque vc usou a sintaxe em C? visto que Passagem por referencia não existe em C? e nesse video estamos se tratando de c++?
printf " A=%d | B=%d",a,b)
SUAS AULAS TEM SIDO MUITO ÚTIL AO MEU APRENDIZADO; E GOSTARIA DE LHE PEDIR; SE POSSÍVEL; PARA QUE VOCÊ DISPONIBILIZE UMA NOVA AULA DE EXPLICAÇÃO SOBRE PASSAGEM POR REFERÊNCIA; POIS FIQUEI MUITO CONFUSO; COM ESTA AULA. DESDE JÁ MUITO OBRIGADO E PARABÉNS POR SEU TRABALHO.
prefiro usar using namespace std; para usar cout>.
Sim, me diga uma coisa, utilizando ponteiros, não dá pra fazer isso(passagem por referência) no C ?
Por que não usou a biblioteca iostream já que estava fazendo o processo em c++?
Tu consegue fazer qualquer coisa de c em c++. Ele não escreveu iostream porque não usou nenhum recurso dessa biblioteca.
C não tem isso mas tem ponteiros, que dá no mesmo, só passar o endereço da variavel usando "&" e dentro da função usar como ponteiro
Me responde, na passagem por valor, a variável de main altera o valor da variável da função chamada atribuindo seu valor a ela, e na passagem por referência a variável main recebe o valor da variável da da função chamada?.
Quando sai mais?
No lugar do printf , eu quero usar cin e cout ! como eu faço?
muito bom!!!! Obrigado.
Porque não utilizou a biblioteca de fluxo iostream ao invés da stdlib.h e stdio.h? A stdlib.h e a stdio.h não são do C? Não são para o uso do printf e do scanf?
Tu consegue fazer qualquer coisa de c em c++. Ele não escreveu iostream porque não usou nenhum recurso dessa biblioteca.
pq vc n usa o cout e o cin?????
ele teria que incluir a biblioteca #include
#include
using namespace std;
nao sei pq ele nao fez isso. eu tambem acho muito mais simples. não sei se ele tem motivos para não incluir essas bibliotecas e comando.
Imagine um salão, tem lá duas pessoas A e B, e nesse salão há um escritório e dentro dele temos gerente X e o presidente y e a porta está fechada, A e B não conseguem ver oque há dentro do "escritório", então X e Y abrem a janela deste comodo usando o operador de endereços(&x, &y) ficando assim: void escritório(conteúdo gerente,conteúdo do presidente) para que A e B possam ver oque ha dentro do comodo. Ao chegar na janela aberta pelo operador &, a pessoa A e a pessoa B conseguem observar o valor que X e Y possuem, e se apropriam dessa informação que é o conteúdo do gerente e do presidente. E assim houve a alteração nos valores armazenados por X e Y com os valores que antes eram somente de A e B. (((((((((((((((((((((((((Se eu entendi errado me digam onde não entendi, estou aprendendo.
Fiquei triste, queria aprender C primeiro e dps C++ :(
Na verdade para da passar por referência em C, mais é mais complicado, ficaria assim:
#include
#include
void altera (int *x, int *y){
*x =5;
*y = 20;
}
int main(int argc, char** argv) {
int a, b;
a =1;
b = 200;
altera(&a,&b);
printf("A = %d, B = %d",a,b);
return (EXIT_SUCCESS);
}
Daniel Fabrício Freitas Bom dia! Isso não é passagem por referência. Você está usando ponteiros para simular uma passagem por referência. Funciona, mas são coisas diferentes.
+G- Tech pelo pouco que eu sei utilizando ponteiros faz passagem por referencia, o google que o diga.
+G- Tech a função scanf usa passagem por referencia
Os parâmetros que foram recebidos na função são ponteiros. Pelo procedimento, primeiramente você declara as variáveis com os seus valores, até aí normal. Porém, no momento da chamada da função, tudo indica que o x e y apontam para o endereço de memória de a e b respectivamente, então é realmente uma passagem por referência. A partir do endereço que eles apontam, podemos trocar os valores de a e b em qualquer lugar no nosso código, mesmo que o ambiente de execução seja destruída depois de executar a função. Os valores ficam armazenados na memória, já trocados, antes de serem destruídos.
E assim torna possível essa troca dos valores nos parâmetros da função indiretamente.
Gostei dessa aula assim como de todas as suas aulas.
Só tenho um observação a fazer: Você disse que em C nós não temos passagens de parâmetros por referência. Isso não é verdade. Temos passagem de parâmetro por referência e C. Sei que você sabe disso mas você se enganou a dizer isso.
Mais uma vez dou meus parabéns pelas suas aulas.