2
Hi guys I’m new to the stack and it’s like this: I’m studying pointers and I made the following code:
typedef struct {
char nom[256];
int size;
float value;
}tdados; // criando o tipo tdados com base na struct
// função que inicializa
tdados inicializa(tdados *dados) { // iremos apontar para uma variabvel
(*dados).size = -1;
}
tdados e_inicializa(tdados dados) { // por não apontar para o endereço dá erro
dados.size = 2;
// o erro é que em vez de ir por endereço fdaz um fetch da variavel que causa problemas
// o programa nã realiza o fetch
}
int main(int argc, char const *argv[])
{
tdados dados;
tdados edados;
inicializa(&dados);
e_inicializa(edados);
fprintf(stdout,"Inicialização correta\nTamanho:\t%i\n",dados.size);
fprintf(stdout,"Inicialização errada\nTamanho:\t%i\n",edados.size);
return 0;
}
I know that in the case of the function initializes it works because I use the pointer of the variable given to be able to work with this and at the time of the call step the absolute value (&) contained in the address, in the second case (function e_initializes) just step the variable in a "simple" way. I know I’m using pointer but I’d like the justification of why one case works and another doesn’t.