Ich versuche, eine Swap-Funktion selbst mit Float-Zeigern zu machen, und es funktioniert einfach nicht. Aus irgendeinem Grund denke ich, dass ich die float
Zeiger auf die Funktion nicht in der richtigen Weise überlasse.Problem mit einer Swap-Funktion mit Zeigern
#include <stdio.h>
#include <stdlib.h>
void swap(float *a, float *b);
int main() {
float num1 = 0.0;
float num2 = 0.0;
float *px = NULL;
float *py = NULL;
printf("Please enter a decimal number: ");
scanf("%f", &num1);
getchar();
printf("Please enter another decimal number: ");
scanf("%f", &num2);
px = &num1;
py = &num2;
printf("The numbers before swapping - \nNum1 = %f\nNum2 = %f\n", num1, num2);
swap(&px, &py);
printf("\nThe numbers after swapping - \nNum1 = %f\nNum2 = %f\n\n", num1, num2);
system("PAUSE");
return 0;
}
void swap(float *a, float *b) {
float temp = *a;
*a = *b;
*b = temp;
}
Löschen Sie alle Vorkommen von 'px' und' py' in diesem Code, indem Sie '& num1' und' & num2' an Ihren Swap übergeben. Oder verlieren Sie die '&' vor 'px' und' py' in Ihrem Swap-Aufruf. Wenn Sie nicht wenigstens eine Warnung über 'float ** bekommen, die nicht mit' float * 'kompatibel ist, bin ich schockiert. – WhozCraig
Aktivieren Sie beim Kompilieren immer alle Warnungen und beheben Sie diese Warnungen. Mit 'gcc -c -Wall -Wextra -Wconversion -std = gnu99 file.c -o file.o' der Compiler-Ausgabe: 1) Zeile: 4: übergeben Argument 1 von 'swap' von inkompatiblen Zeigertyp 2) Zeile 25: Passing Argument 2 von 'swap' von inkompatiblen Zeigertyp 3) line4 erwartet 'float *' aber Argument ist vom Typ 'float **'. Schlage vor, diese Probleme zu beheben, bevor du etwas anderes versuchst. Hinweis: Warnungen nicht ignorieren. – user3629249