【问题标题】:Variable length arrays in C and C++ [duplicate]C和C ++中的可变长度数组[重复]
【发布时间】:2013-06-20 18:49:45
【问题描述】:

这个程序正在崩溃。在 C 中使用 n 长度数组是否有一些限制? 它在 C++ 中工作(使用 cin cout)。感谢您的宝贵时间。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
  int n;
  printf("n\n");
  scanf("%d\n",n);
  int arr[n];
  system("PAUSE");  
  return 0;
}

【问题讨论】:

  • @Mysticial 大到无法放入内存中,该内存将被一个指向int 的想要访问的指针访问,而是一个未初始化的非指针......
  • 顺便说一句,这甚至不应该在 C++ 的严格模式下编译。 C++ 没有 VLA。
  • "it works in C++" 不是应该在 C 中工作的原因
  • 了解如何使用调试器,以便确定它崩溃的位置。
  • 请不要编辑您的代码并插入修复程序。它改变了问题的性质。而是转到解决问题的答案,然后单击复选标记。然后人们就会知道你的问题已经解决了。

标签: c++ c


【解决方案1】:

您的代码有另一个问题:

scanf("%d\n", n);
//           ^^
// should be &n

scanf 需要一个指针,而您正在传递 int

【讨论】:

    【解决方案2】:

    正如我在我的另一个答案中指出的那样 see here

    在使用scanf() 时,应避免使用格式说明符以外的字符,例如(%d%s),因为当您在 scanf 中的引号之间写任何内容时,它希望您完全按原样输入该部分那里,这对于新手来说是非常有问题的。

    您的回答中最重要的错误是:

    scanf("%d",n)
               ^ 
    

    你必须传递你想要输入的变量的地址,所以它应该是&amp;n

    【讨论】:

      猜你喜欢
      • 2013-06-23
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2021-07-11
      • 1970-01-01
      • 1970-01-01
      • 2015-06-14
      • 2018-12-16
      相关资源
      最近更新 更多