Ponteiro de Ponteiro

1. Ponteiro de Ponteiro

Fellipe Eduardo Peixoto da Rocha
FellipePeixoto

(usa Linux Mint)

Enviado em 09/06/2016 - 23:03h

Boa noite Galera.
Problema ao usar ponteiro de ponteiro na linguagem C.
Tenho uma struct que abriga um ponteiro de ponteiro para outra struct, esse ponteiro de ponteiro tem a finalidade de alocar um vetor da mesma. Segue as structs.

struct Vertice{
int grau;
};
typedef struct Vertice vertice;

struct Aresta{
int a;
int b;
float peso;
};
typedef struct Aresta aresta;

typedef struct Grafo{
int graphtype;

vertice **vetVertice;

int Maxquant_vertices;

int nextvertex;

aresta **vetAresta;

int Maxquant_arestas;

int nextedge;
}grafo;

Até ai tudo bem. Consigo alocar devidamente a estrutura (fiz um debug e conferi os endereços e alocações) e suas dependências. O problema ta na hora de manipular. Eis uma situação que está acontecendo:
Vamos supor que eu já aloquei tudo anteriormente, p->vetvertice[0..8] (possui 9 posições) e agora só falta manipular/inserir dados na estrutura. Vou utilizar essa função:

int GVcriaVertice(grafo* p) {
if (p->nextvertex <= p->Maxquant_vertices) {
p->vetVertice[p->nextvertex]->grau = 0;

p->nextvertex++;

/*retorna o identificador do vertice
o vertice criado e sempre o atual-1*/
return (p->nextvertex - 1);
}
return 0;
}

O problema é quando chega em " p->vetVertice[p->nextvertex]->grau = 0; " .
Quando essa linha é executada a posição de número 8 do vetor é anulada.

Não sei se consegui explicar meu problema direito ou se não mostrei o suficiente do código, mas estou aqui qualquer coisa e posso explicar melhor. Desde já agradeço :)


  


2. Re: Ponteiro de Ponteiro

Paulo
paulo1205

(usa Ubuntu)

Enviado em 10/06/2016 - 00:27h

Seria bom se você mostrasse a alocação.

Zera a posição 8 do vetor, mas com quais valores das variáveis usadas como índice?

Por que você precisa de ponteiro de ponteiro? Na maioria das vezes em que os vejo empregados é para simular um array bidimensional (matriz), mas não pareceu ser assim que você os utilizou. Você realmente quer um array unidimensional de ponteiros? Por quê?


3. Re: Ponteiro de Ponteiro

Fellipe Eduardo Peixoto da Rocha
FellipePeixoto

(usa Linux Mint)

Enviado em 10/06/2016 - 11:23h

paulo1205 escreveu:

Seria bom se você mostrasse a alocação.

Zera a posição 8 do vetor, mas com quais valores das variáveis usadas como índice?

Por que você precisa de ponteiro de ponteiro? Na maioria das vezes em que os vejo empregados é para simular um array bidimensional (matriz), mas não pareceu ser assim que você os utilizou. Você realmente quer um array unidimensional de ponteiros? Por quê?


Então, eu precisava utilizar pra referenciar outra estrutura. Por exemplo, caso eu precisasse criar um vetor de ponteiros para outra estrutura que também é um ponteiro. Mas deixei disso e to usando só ponteiro mesmo, ta em cima da hora haha.
Obs: Não zera a posição 8, ela é liberada pro sistema operacional. Não é possível acessar.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts