|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Regno Unito
Messaggi: 5726
|
[C] Problema con i puntatori [NOOB]
devo leggere 3 interi e metterli in memoria heap con 3 puntatori P1, P2, P3.
Poi tramite procedura fare in modo che P1 punti alla cella precedentemente indirizzata da P2, P2 punti alla cella precedentemente indirizzata da P3 e P3 punti alla cella precedentemente indirizzata da P1. il mio tentativo è atroce perchè non ci ho capito niente Codice:
#include <stdio.h>
#include <stdlib.h>
void scambia3(int*,int*,int*);
int main(void)
{
int X, Y, Z;
int*P1,*P2,*P3;
P1=(int*)malloc(sizeof(int)); P2=(int*)malloc(sizeof(int)); P3=(int*)malloc(sizeof(int));
printf("inserire X, Y e Z");
scanf("%d%d%d",&X,&Y,&Z);
scambia3(P1,P2,P3);
printf("i valori scambiati di X, Y e Z sono %d %d %d",*P1 ,*P2, *P3);
system("PAUSE");
}
void scambia3(int*P1,int*P2,int*P3)
{
int Ptemp;
Ptemp=*P1;
*P1=*P2;
*P2=*P3;
*P3=Ptemp;
}
__________________
3090 FE & Ryzen 5700x - Legion 7 5800h 32gb - 3080 16gb Ultima modifica di Vash88 : 14-01-2008 alle 10:42. |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Sep 2003
Città: Regno Unito
Messaggi: 5726
|
Codice:
#include <stdio.h>
#include <stdlib.h>
void scambia3(int*,int*,int*);
int main(void)
{
int X, Y, Z;
int*P1,*P2,*P3;
printf("inserire X, Y e Z");
scanf("%d%d%d",&X,&Y,&Z);
P1=(int*)malloc(sizeof(int)); P2=(int*)malloc(sizeof(int)); P3=(int*)malloc(sizeof(int));
*P1=X; *P2=Y; *P3=Z;
scambia3(P1,P2,P3);
printf("i valori scambiati di X, Y e Z sono %d %d %d",*P1 ,*P2, *P3);
system("PAUSE");
}
void scambia3(int*P1,int*P2,int*P3)
{
int Ptemp;
Ptemp=*P1;
*P1=*P2;
*P2=*P3;
*P3=Ptemp;
}
__________________
3090 FE & Ryzen 5700x - Legion 7 5800h 32gb - 3080 16gb |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Così però non metti sullo heap i tre interi;
Stai mettendo sullo stack 3 interi e allocando sullo heap spazio per tre interi che referenzi tramite tre puntatori che subito dopo fai puntare ai tre interi sullo stack... Infatti prova a commentare questa riga e vedrai che il codice funziona lo stesso: Codice:
P1=(int*)malloc(sizeof(int)); P2=(int*)malloc(sizeof(int)); P3=(int*)malloc(sizeof(int)); Codice:
*P1=X; *P2=Y; *P3=Z; dichiarazione: Codice:
int X, Y, Z; Codice:
printf("inserire X, Y e Z");
scanf("%d%d%d",&X,&Y,&Z);
Ultima modifica di banryu79 : 14-01-2008 alle 13:39. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:15.



















