devilheart
non sono sicuro di aver capito bene quello che vuoi fare. vuoi che le modifiche al puntatore in sé (oltre che all'oggetto puntato) siano visibili al di fuori della funzione? in questo caso di servono i puntatori a puntatori. una roba del tipo
int **a;
Non funziona, il compilatore restituisce un errore di "conversione invalida da *int a **int".
roby65
Codice:
void funzione(int* p)
{
cout<<"Il puntatore punta al valore "<<(*p)<<endl;
}
int main()
{
int variabile=20;
int *variabile2=new int;
(*variabile2)=50;
funzione(&variabile);
funzione(variabile2);
}
Non so se ho capito bene ma è questo che intendi?
Si, è questo.
Però, non capisco il perchè, se alloco memoria nella funzione, questa restituisce dei valori sballati al main. Sia per quanto riguarda l'indirizzo di memoria, sia per quanto riguarda il valore puntato.
Provate a spostare il new int nella funzione...visualizzate i valori nella funzione, poi nel main.
edit: ecco...
Codice:
#include <iostream>
using namespace std;
#define NEWLINE cout<<endl;
void funzione (int *b);
int main(){
int *p;
funzione (p);
cout << "--- NEL MAIN ---"; NEWLINE
cout << "p=" << p; NEWLINE
cout << "*(p)=" << *(p); NEWLINE
cout << "p[0]=" << p[0]; NEWLINE NEWLINE
system ("pause");
}
void funzione (int *b){
b=new int;
*b=1;
cout << "--- NELLA FUNZIONE ---"; NEWLINE
cout << "p=" << b; NEWLINE
cout << "*(p)=" << *(b); NEWLINE
cout << "p[0]=" << b[0]; NEWLINE NEWLINE
}