Jump to content

Warning clássico: Assignment makes pointer from integer without cast


Baptistazito
 Share

Recommended Posts

Boas Tardes!!!

Venho colocar uma dúvida que é um clássico aqui no fórum mas dos tópicos que vi aqui do c nenhuma respondeu à minha dúvida e o warning continuou.

O problema pelo seguinte:

Tenho uma estrutura

typedef struct PESSOA{
 int blablabla
 struct PESSOA * next;
}pessoa

e pretendo construir uma pilha. (Pilha porque quero fazer o menor número de acessos possíveis à memória)

depois tenho um ficheiro .c para manipulaçao e criaçao das listas e um outro com o main

tenho a função

pessoa * inicializa (){
 return NULL
}

e quando a chamo no main

int main()
{
 pessoa * listaPessoas;
 int variaveis;

 listaPessoas = inicializa();
 bla
 bla
 bla
 return 0;
}

dá o tal warning, embora faça aquilo que pretendo.

Ja ainda outras dúvidas que tenho que me intrigam ainda um bocado. Qual a diferença entre um calloc e o malloc?

Ainda outra e a mais importante... Qual a melhor maneira que consideram para criar SCC's ( strongly connected components)? Vetores, Listas, nós com ponteiros a apontar para cada uma das partilhas( sem o next), tabelas?

O meu trabalho consiste em identificar os tais SCC's, e a minha ideia é fazer uma lista dos nós e dentro de cada nó ter um género de um vetor ou tabela(ainda não pensei qual será a melhor opção) , em que a primeira coisa a fazer é identificar quais os nós que estão "completamente" sozinhos (não partilham com nenhum outro nó), e em seguida identificar os "loops" e fazer grupos máximos desses mesmos loops. Tenciono fazer a lista porque quanto o tempo e optimização do código são fatores essenciais do trabalho.

Cumps e as minhas desculpas se o post é demasiado longo, se os admins o entenderem eu separarei as questões em diferentes tópicos. Só não o fiz porque estão todas relacionadas com o mesmo trabalho.

Link to comment
Share on other sites

dá o tal warning, embora faça aquilo que pretendo.

- tens a função declarada em algum header (.h) que não está a ser incluído no ficheiro onde se encontra o main ?

- tens a função inicializa no mesmo ficheiro que a função main mas está declarada após esta última ?

o problema é que estás a chamar a função inicializar antes de esta ser sido interpretada pelo compilador. no final funciona porque no final a função existe e o linker come tudo, mas o compilador não tem a certeza e avisa-te disso.

-------

SCC :

tenho visto no fórum que é mais simples as pessoas perceberem e criarem código através de arrays bidimencionais (o que chamas de tabelas ?).

eu preferia resolver através de listas de adjacências

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

nao tenho as funçoes declaradas em nenhum header. Acabei por resolver pondo logo no main na primeira linha(LOL). Agora da seg fault mas acho que consigo resolver. No que toca à lista de adjacências, isso não irá consumir memória demasiada uma vez que me vai duplicar as arestas do grafo? Digo isto porque o grafo é dirigido e importa se 2 partilha com 3 e/ou 3 partilha com 2. e sim arrays bidimensionais é o que chamo de tabelas.

Link to comment
Share on other sites

Boas outra vez! Lamento a resposta tardia mas só agora cheguei a casa e tive tempo para pegar nisto.

estou a perder informação?! Como assim? Não me basta só saber quem manda o quê e para onde, uma vez que o output a gerar consiste apenas em contar os grupos máximos no grafo e não em indentificá-los/desenhá-los. Com o que estás a querer dizer não teria de percorrer a lista de adjacências?

E já agora aconselhas uma lista de adjacências única, ou a criação de várias listas para cada SCC, uma vez que, e isto na minha maneira de pensar, quanto mais pequenas as listas menos tempo demoram a percorrer, e como disse anteriormente o tempo é o factor essencial e a memória também, embora não tão importante como o tempo. Cumps

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.