PDA

View Full Version : Problema in C


jarno
23-02-2007, 09:15
Sto facendo un semplice programma in C e compilando lo script qui sotto mi esce un errore nella parte evidenziata:

#include<stdio.h>
#include<stdlib.h>

main()
{
int M=10001;
int N=10001;
int* vett;
int i;
int casuale;
//inizializzazione dei due numeri M e N con controllo
while(N>10000 && M>10000)
{

printf("/nInserire M => ");
scanf("%d",&M);
printf("/nInserire N => ");
scanf("%d",&N);
}

//generazione di un vettore di N numeri casuali
vett=malloc(N*sizeof(int));
for(i=0;i<N;i++)
{
casuale=rand();
vett[i]=casuale;
}
for(i=0;i<N;i++)
{
printf("%d",&vett[i]);}}

dicendomi "invalid conversion from void to int"
Ma tale vettore è stato inizializzato con int.Non capisco...le librerie son quelle giuste....bho
Mi sapete dare una mano?
Grazie mille^^

andbin
23-02-2007, 09:59
vett=malloc(N*sizeof(int)); Quasi sicuramente stai compilando il sorgente come C++ e non come C.

malloc ritorna un void* mentre tu devi assegnare il valore a un int*.
Nel C (ANSI C) esiste una eccezione ai cast: è possibile passare da void* a un puntatore di altro tipo (e viceversa) senza alcun cast. In C++ no, devi mettere il cast.

Quindi:
vett=(int*) malloc(N*sizeof(int));

jarno
23-02-2007, 10:04
Hai perfettamente ragione,lo sto compilando come un c++
Ora funge tutto.Grazie di tutto^^