|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
Problema in C
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^^ |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
|
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));
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%) |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Sep 2006
Messaggi: 64
|
Hai perfettamente ragione,lo sto compilando come un c++
Ora funge tutto.Grazie di tutto^^ |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:08.