【问题标题】:I think i did correct with scanf... but it brought C4477 and crashed我想我用scanf做对了......但它带来了C4477并崩溃了
【发布时间】:2021-12-10 09:31:00
【问题描述】:

我从未见过这样的编译错误。 什么是 int*? 错误说 %d 需要 int* 而不仅仅是 int 我使用 %d 后跟 int var... 但是我应该如何处理 int*?

int main()
{
    int hour, min, car;

    printf("-------------------------------------\n");
    printf("\n주차요금 계산 프로그램\n");
    
    printf("\n주차 시간을 입력하세요.\n\n   시간:\n");
    scanf("%d",hour);
    
    printf("\n   분:\n");
    scanf("%d", min);

    printf("\n%d시간 %d분\n", hour, min);
    printf("\n당신의 차종은 무엇입니까?\n");
    printf("\n 1.경차   2.기타\n");
    scanf("%d", car);

【问题讨论】:

  • hour 的声明是什么样的? int hour;?然后使用scanf("%d", &hour);
  • @Sunfare1944 - 您从哪里得知可以按值将变量传递给scanf
  • 暂时不用担心int * 的含义。这只是意味着您需要在使用scanf 填写的大多数变量上使用&。除了字符串之外的所有内容。
  • C 是按值传递的:scanf 的参数被复制,并具有该函数的生命周期。因此,没有办法直接返回参数;你必须传递它的内存地址。有了字符串,你已经是了。

标签: c function calculator fare


【解决方案1】:

scanf 需要一个指针作为其第二个参数。

int main()
{
    int hour, min, car;

    printf("-------------------------------------\n");
    printf("\n주차요금 계산 프로그램\n");
    
    printf("\n주차 시간을 입력하세요.\n\n   시간:\n");
    scanf("%d",&hour);
    
    printf("\n   분:\n");
    scanf("%d", &min);

    printf("\n%d시간 %d분\n", hour, min);
    printf("\n당신의 차종은 무엇입니까?\n");
    printf("\n 1.경차   2.기타\n");
    scanf("%d", &car);
}

您将在学习指针时了解原因。现在,只需记住将这个 & 运算符放在变量之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多