【问题标题】:Array has garbage values in function in c++!数组在 C++ 中的函数中有垃圾值!
【发布时间】:2014-04-12 23:02:04
【问题描述】:

我有以下功能:

  int *array1=new int [3];
  void My_function()
  {
  My_set(array1);
  for(int i=0;i<3;i++){    //The output is 5 15 55
  cout<<array1[i]<<endl;
  }
  Display (array1)

  }

  void My_set(int *array1)
  {
  array1[0]=5;
  array1[1]=15;
  array1[2]=55;
   }

  void Display(int *array1){
  for(int i=0;i<3;i++){
  cout<<array1[i]<<endl; //The output is Garbage  -842150451
   }

   }

注意:这个问题发生在复杂的项目中,但我用简单的代码展示了我的问题! 谢谢你:)

【问题讨论】:

  • 为我工作ideone.com/GBkVTo...
  • 使用std::vector&lt;int&gt;,当您在大多数调试编译器中溢出缓冲区时,它会警告您。
  • @awesomeyi:您编译的代码具有未定义的行为。所以它做你期望它做的事情是无关紧要的。
  • 尝试 int *array1 = new int[3];
  • 通常使用原始指针不是一个好主意。在您已知元素数量的情况下,请使用“std::array”(例如,“std::array array1”)。

标签: c++ arrays garbage


【解决方案1】:

你需要像这样声明你的数组int *array1 = new int[3];

【讨论】:

  • 当然,我想知道他/她为什么用 new 声明它。考虑测试?不过,丹提出了一个很好的观点。 @user3316887 如果您最终创建了具有动态大小的数组,请确保将数组的大小作为参数传递给您的函数。
猜你喜欢
  • 1970-01-01
  • 2013-05-07
  • 1970-01-01
  • 2022-11-14
  • 2023-02-06
  • 1970-01-01
  • 2014-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多