使用指针创建交换函数的问题

时间:2016-03-18 22:45:54

标签: c pointers

我正在尝试使用浮点指针自己创建一个交换函数,它只是不起作用。出于某种原因,我认为我没有以正确的方式将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;
}

2 个答案:

答案 0 :(得分:2)

您将指针的地址传递给float,而不仅仅传递float值的地址。移除pxpy变量并简化您的呼叫:

swap(&num1, &num2);

编译器应该发出有关此类型不匹配的警告。不要忽略这些警告,它们表示编程错误。甚至更好,启用更多警告:gcc -Wall -Wextra -Werrorclang -Weverything会产生更多有关潜在错误的警告。

答案 1 :(得分:0)

<label>的原型修改为cursor: pointer。然后将函数的定义修改为:

swap