我正在尝试使用浮点指针自己创建一个交换函数,它只是不起作用。出于某种原因,我认为我没有以正确的方式将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;
}
答案 0 :(得分:2)
您将指针的地址传递给float
,而不仅仅传递float
值的地址。移除px
和py
变量并简化您的呼叫:
swap(&num1, &num2);
编译器应该发出有关此类型不匹配的警告。不要忽略这些警告,它们表示编程错误。甚至更好,启用更多警告:gcc -Wall -Wextra -Werror
或clang -Weverything
会产生更多有关潜在错误的警告。
答案 1 :(得分:0)
将<label>
的原型修改为cursor: pointer
。然后将函数的定义修改为:
swap