|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Rome
Messaggi: 781
|
[C] Errore lettura puntatore
Salve
volevo chiedere come mai questo codice non funziona: Codice:
#include <stdio.h>
#include <stdlib.h>
void test(int*);
int a = 7;
int main(int argc, char** queen_position)
{
int* p;
test(p);
printf("%d\n", *p);
return 0;
}
void test(int* p)
{
p = malloc(sizeof(int));
*p = a;
}
Grazie a tutti per l'aiuto.
__________________
My config: Intel i7-9700K CPU, 32GB RAM, NVIDIA GeForce FE 3080
My Steam profile: Njk00 Fondatore e amministratore del campionato online di F1 su PC https://f1abruzzoedintorni.files.wordpress.com/ |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 376
|
Codice:
#include <stdio.h>
#include <stdlib.h>
void test(int * &);
int a = 7;
int main(int argc, char** queen_position)
{
int* p;
test(p);
printf("%d\n", *p);
return 0;
}
void test( int * & p)
{
p = (int*) malloc(sizeof(int));
*p = a;
printf("%d\n", *p); // per verifica
}
).Se provi il tuo codice con la riga dove c'è //per verifica vedi che ottieni il risultato che volevi e cioè il valore di a. Il problema è che senza "&" nella funzione test() viene eseguita una copia di p e non agisce su p passato nel main(). Nota: p che usi nel main() è diverso da p usato nella dichiarazione della funzione. Ultima modifica di Ilbaama : 27-01-2010 alle 17:13. |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Sep 2006
Città: Rome
Messaggi: 781
|
Grazie mille per la soluzione.
__________________
My config: Intel i7-9700K CPU, 32GB RAM, NVIDIA GeForce FE 3080
My Steam profile: Njk00 Fondatore e amministratore del campionato online di F1 su PC https://f1abruzzoedintorni.files.wordpress.com/ |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:20.











).








