1:31 no printf dentro da função vc indicou a referência ao n "printf("Valor = %d ",*n)" e não o valor de n em si, por estar nesse formato quando for compilar, o resultado que sera mostrado é 11 e 21, e não o endereço de memória como da a entender que vai ser o resultando pelas chamadas de funções (utilização do &).
o * tira a referencia de um ponteiro, se você tem uma variável X e aplica nela a referencia &X, você tem um endereço que pode ser atribuído a um ponteiro. Se você pega um ponteiro P e tira a referencia dele com um asterisco, *X, isso trará o conteúdo da variável que está sendo apontada pelo ponteiro.
Pra quem vai estudar Estrutura de Dados em C, vai usar este atalho da seta a exaustão(imagina usar com o * rapidinho você cometeria erros). Precisa entender muito bem o funcionamento de struct porque o BIXO é BRABO se loko.
Eu não sei nem explicar o alívio que senti no meu coração quando compilei sem erros dps de muito tempo tentando fazer isso rodar :~ Finalmente consegui entender uma estrutura passada como referência. Muito obrigada mesmo.
Suas aulas são excelentes, parabéns. Estou assistindo e voltando nos seus vídeos a meses, parece que sempre tem um Bizú novo, que não me liguei da outra vez que vim.
Boa noite, poderia explicar se tem jeito de passar um vetor de struct como parâmetro (Por valor ou Por Referência) para uma função, e se tem como fazer? Grato!
Para isso, você declara dentro da função que esta recebendo como parametro a variavel como vetor(basta colocar[] em frente a variavel para que ele entenda ela como um vetor), e apos, ao inves de usar (*nome_struct).var ou nome_struct->var, utilize: nome_struct[n].var Assim ele entenderá que é um vetor de struct
Estou tentando passar um array de struct por referêcia e não estou conseguindo. Ex: typedef struct estrutura{...código...}estrutura; //suponha que existe dentro da estrutura declarações de variaveis de qualquer tipo. funcaoReferencia(estrutura *e,int tam){ int i; for(i = 0; i < tam.i++){ printf("digite um numero: ") e[i]->variavel; // Ele nao aceita isso, por quê? } } main(){ estrutura e[5]; funcaoReferencia(&e,5) } Quando eu passo o array de struct por referencia usando e tento alterar cada indice usando array_estrutura[i]->variavel não funciona. Só posso criar funções que recebem uma estrutura por vez?
Muito bom o seu vídeo. Parabéns. Gostaria apenas de ver se existe alguma possibilidade de eu passar como parâmetro da função o campo que deverá ser alterado e seu valor, dinamicamente, de forma que eu possa escolher na chamada da função qual campo será alterado. Por exemplo, chamando a função através de "atribui(p.x, 10)" ou "atribui(p.z, 10.98)", eu teria a função: void atribui(struct ponto *campo, valor) { campo = valor } Como eu faria para o primeiro parâmetro ser o campo que eu quero alterar, e não a struct completa? Digamos que no struct eu tenha campos do tipo int e do tipo float. Se puder me ajudar, eu ficarei grato.
Boa noite professor! Parabéns pelo seu material, excelente qualidade a nível técnico. Gostaria de assistir uma videoaula onde o Sr. mostrasse-nos como ter um struct contendo uma função (OU ponteiro dela) como membro, de forma que fizesse alusão a um Objeto das linguagens que são orientadas com esse paradigma. Abraço.
Olá! No lugar de struct ponto, poderia ser usado typedef struct{ int x,y; }ponto; ? Ai na hora de declarar a variável não precisaria usar o struct novamente, somente ponto p1 = {10,20}; Estou certo mestre? Parabéns pelas vídeo aulas!
obrigado!
ajudou mt
gênio
Mais uma aula incrível, como de costume.
Obrigado!
1:31 no printf dentro da função vc indicou a referência ao n "printf("Valor = %d
",*n)"
e não o valor de n em si, por estar nesse formato quando for compilar, o resultado que sera mostrado é 11 e 21, e não o endereço de memória como da a entender que vai ser o resultando pelas chamadas de funções (utilização do &).
o * tira a referencia de um ponteiro, se você tem uma variável X e aplica nela a referencia &X, você tem um endereço que pode ser atribuído a um ponteiro.
Se você pega um ponteiro P e tira a referencia dele com um asterisco, *X, isso trará o conteúdo da variável que está sendo apontada pelo ponteiro.
muitoooo obrigada por esses videos, ta ficando BEM mais claro pra mim
Pra quem vai estudar Estrutura de Dados em C, vai usar este atalho da seta a exaustão(imagina usar com o * rapidinho você cometeria erros). Precisa entender muito bem o funcionamento de struct porque o BIXO é BRABO se loko.
Se p1 fosse um vetor de estrutura, passaria sem o "&"?
Sim, vc passaria ele inteiro por referência
e como eu faço no caso de ter que preencher um vetor de struct em uma função?
tambem queria saber
Eu não sei nem explicar o alívio que senti no meu coração quando compilei sem erros dps de muito tempo tentando fazer isso rodar :~
Finalmente consegui entender uma estrutura passada como referência. Muito obrigada mesmo.
Caralho mano... Vc é foda... Parabens msm... Tem tem três dias que tento aprender struct... E aprendi cntg em apenas 8 minutos... Parabens msm...
Suas aulas são excelentes, parabéns.
Estou assistindo e voltando nos seus vídeos a meses, parece que sempre tem um Bizú novo, que não me liguei da outra vez que vim.
Caro André, muito boa a explicação. Não estava conseguindo entender como passar struct para a função. Após tua vídeo aula, passei a entender.
caraaaaa... tu é um genio... ja estava a mais de 2 horas tentando fazer um programa com structs em c
vaklleeeeu
Muito bom. Uma dúvida, como seria para passar uma matriz de structs?
Tenho a mesma dúvida =/
Um vetor e struct é uma matriz.
Boa noite, poderia explicar se tem jeito de passar um vetor de struct como parâmetro (Por valor ou Por Referência) para uma função, e se tem como fazer? Grato!
Para isso, você declara dentro da função que esta recebendo como parametro a variavel como vetor(basta colocar[] em frente a variavel para que ele entenda ela como um vetor), e apos, ao inves de usar (*nome_struct).var ou nome_struct->var, utilize: nome_struct[n].var
Assim ele entenderá que é um vetor de struct
Boa explicação.
a função void soma_imprime_valor(int *n) dá erro no codeblocks
Qual erro?
vlw me ajudou muito, era exatamente isso que eu estava procurando
Estou tentando passar um array de struct por referêcia e não estou conseguindo. Ex:
typedef struct estrutura{...código...}estrutura; //suponha que existe dentro da estrutura declarações de variaveis de qualquer tipo.
funcaoReferencia(estrutura *e,int tam){
int i;
for(i = 0; i < tam.i++){
printf("digite um numero: ")
e[i]->variavel; // Ele nao aceita isso, por quê?
}
}
main(){
estrutura e[5];
funcaoReferencia(&e,5)
}
Quando eu passo o array de struct por referencia usando e tento alterar cada indice usando array_estrutura[i]->variavel não funciona. Só posso criar funções que recebem uma estrutura por vez?
David Silva Vc deve usar a seguinte sintaxe: e[i].variávelCada posição de "e" gurda um struct. Se guardasse um ponteiro, ai vc usaria "->"
Muito bom o seu vídeo. Parabéns.
Gostaria apenas de ver se existe alguma possibilidade de eu passar como parâmetro da função o campo que deverá ser alterado e seu valor, dinamicamente, de forma que eu possa escolher na chamada da função qual campo será alterado. Por exemplo, chamando a função através de "atribui(p.x, 10)" ou "atribui(p.z, 10.98)", eu teria a função:
void atribui(struct ponto *campo, valor) {
campo = valor
}
Como eu faria para o primeiro parâmetro ser o campo que eu quero alterar, e não a struct completa? Digamos que no struct eu tenha campos do tipo int e do tipo float.
Se puder me ajudar, eu ficarei grato.
Porque p1 ali e não p?
Vitoria Trigo Onde?
+Vitoria Trigo
p1 seria o nome da struct que ele declarou, por isso fica p1.x e p1.y
É que você colocou a struct como parâmetro mas dentro da função colocou p e na função main p1!
então se eu fizer *(x.p) eu vou estar passando o p como referência?
Os parentese são necessários porque o operador "*" de referência tem precedencia menor que o "."
nao tem como passar a estrutura inteira por valor?
Show! Gostei da seta ->
Boa noite professor!
Parabéns pelo seu material, excelente qualidade a nível técnico.
Gostaria de assistir uma videoaula onde o Sr. mostrasse-nos como ter um struct contendo uma função (OU ponteiro dela) como membro, de forma que fizesse alusão a um Objeto das linguagens que são orientadas com esse paradigma.
Abraço.
Vc teria um e-mail para contato?
Sheldon Cooper!!
kkkkkkkkkkkkkkkkkkk... vai estudar Barroso, bora voltar pra ufpi rsrs
Ponteiro. ou &.
Olá!
No lugar de struct ponto, poderia ser usado
typedef struct{
int x,y;
}ponto;
?
Ai na hora de declarar a variável não precisaria usar o struct novamente, somente ponto p1 = {10,20}; Estou certo mestre?
Parabéns pelas vídeo aulas!