フロートポインタで自分自身でスワップ関数を作成しようとしていて、うまくいきません。何らかの理由で私は正しい方法で関数へのfloat
ポインタを渡さないと思う。ポインタでスワップ関数を作成する際の問題
#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;
}
このコードでは、 '&num1'と'&num2'をスワップに渡して、このコードで 'px'と' py'をすべて削除します。または、スワップコールで 'px'と' py'の前に '&'をなくしてください。この中で 'float **'が 'float *'と互換性がないという警告が表示されない場合、私はショックを受けます。 – WhozCraig
コンパイル時には、常にすべての警告を有効にしてから、それらの警告を修正してください。 'gcc -c -Wall -Wextra -Wconversion -std = gnu99 file.c -o file.o'を使用してコンパイラの出力を行います:1)行:4:互換性のないポインタ型からの 'swap'の引数1を渡します2)行25:引数2を互換性のないポインタ型から渡す3)line4 expected 'float *'しかし引数は 'float **'型です。他のものを試す前に、これらの問題の修正を提案してください。注:警告を無視しないでください。 – user3629249