Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

Ponteiros para ponteiros..

Recommended Posts

Tenho o seguinte código:

 

Estrutura - está na função main

typedef struct
{
	int cod;
	char nome[60];
} materialLivro;

Função registrarMaterial

void registrarMaterial(void)
{
	materialLivro* livro = NULL;

	livro = (materialLivro*)malloc(sizeof(materialLivro));

	if(livro == NULL)
 	return;

	livro->cod = 225;

	// chama o módulo de entrada de dados
	obter(&livro);

	return;
}

Função obter

void obter(materialLivro** livro)
{
	printf("%d\n\n",*livro->cod);
	return;
}

Pois bem, quero visualizar dentro da função obter, o valor gravado no campo cod da estrutura.

Quando tento compilar gera o seguinte erro:

lise e Projeto de Sistemas I/Estudo de Caso-Biblioteca/obter.c|20|error: request for member 'cod' in '* livro', which is of non-class type 'materialLivro*'|

Compartilhar este post


Link para o post
Compartilhar em outros sites

parênteses.

 

Em C, o operador unário de dereferenciação, *, tem a precedência mais baixa que o operador de acesso, ->.

*a->b //dereferencia b, que é membro de a
(*a)->b //derefencia a e otém b

Compartilhar este post


Link para o post
Compartilhar em outros sites

Resolveu Victor, vlw..porém não entendi essa precedência, sabe onde tem mais informações a respeito? :)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.