In questo programma sono stati creati due puntatori (a, b) che puntano all'indirizzo di memoria di xey. Nella funzione che ho creato dovrebbe scambiare l'indirizzo di memoria di aeb (Quindi b = a e a = b). Quando compilo mi dà un errore (conversione non valida da 'int' a 'int *') Che cosa significa? Sto passando un puntatore alla funzione o la legge come una normale int?Passaggio di un punto a una funzione
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
void pointer(int* x,int* y)// Swaps the memory address to a,b
{
int *c;
*c = *x;
*x = *y;
*y = *c;
}
int main()
{
int x,y;
int* a = &x;
int* b = &y;
cout<< "Adress of a: "<<a<<" Adress of b: "<<b<<endl; // Display both memory address
pointer(*a,*b);
cout<< "Adress of a: "<<a<<" Adress of b: "<<b<<endl; // Displays the swap of memory address
return 0;
}
messaggio di errore:
C++.cpp: In function 'int main()':
C++.cpp:20:16: error: invalid conversion from 'int' to 'int*' [-fpermissive]
C++.cpp:6:6: error: initializing argument 1 of 'void pointer(int*, int*)' [-fpermissive]
C++.cpp:20:16: error: invalid conversion from 'int' to 'int*' [-fpermissive]
C++.cpp:6:6: error: initializing argument 2 of 'void pointer(int*, int*)' [-fpermissive]
In realtà si desidera scambiare i valori puntati verso i puntatori o scambiare gli indirizzi delle variabili? Solo chiedendo, perché come ha sottolineato Vlad, stai scambiando i valori e questo può essere fatto senza alcun suggerimento (che è molto più bello). – user463035818
Sto scambiando l'indirizzo di memoria. –
Beh, questo è interessante. Forse proprio non capisco, ma ho problemi a capire come potrebbe essere usato. Non è così: qualsiasi puntatore che punta a 'a' prima punterà a' b' dopo lo scambio. Quindi ha praticamente lo stesso effetto di scambiare i valori, o sono troppo confuso ?? – user463035818