我有一个有两个双精度输入的代码,然后我想把它转换成两个整数我认为这要么是解引用的问题,要么是我的强制转换语法关闭了提前谢谢

#include <stdio.h>

int main()
{
    double * int1;
    double * int2;

    printf("Put in two numbers:");
    scanf("%lf", int1);
    scanf("%lf", int2);

    int a = (int) (int1);
    int b = (int) (int2);

    printf("%d\n%d", a, b);
}

最佳答案

正如我所见,您可以通过两种方式来完成这项工作:一种是在堆中使用指针和动态内存,另一种是使用自动值。
具有动态分配内存的指针

#include <stdio.h>
#include <stdlib.h>
int main()
{
    double * int1 = malloc(sizeof(double));
    double * int2 = malloc(sizeof(double));

    printf("Put in two numbers:");
    scanf("%lf", int1);
    scanf("%lf", int2);

    int a = (int) *int1;
    int b = (int) *int2;

    printf("%d\n%d", a, b);
    free(int1);
    free(int2);
}

在系统堆栈上分配的自动值
#include <stdio.h>

int main()
{
    double int1;
    double int2;

    printf("Put in two numbers:");
    scanf("%lf", &int1);
    scanf("%lf", &int2);

    int a = (int) int1;
    int b = (int) int2;

    printf("%d\n%d", a, b);
}

注意:在您的示例中,指针的使用方式存在一个问题,即它们指向的内存不存在,而且我相信scanf不会为指针分配内存。

10-07 20:34