0

这是代码:

int *num_arr = number_to_array(num);
cout<<"\nNum aaray:"<<*(num_arr+1);
display(num_arr, digit_count);

这里的 cout 语句显示了正确的值,但 display() 不是。显示器显示垃圾值

显示()的代码:

void display(int num_arr[],int dc)
{
cout<<"\n";
cout<<"\n"<<num_arr[0];
cout<<"\n"<<num_arr[1];
 for(int i = (dc-1); i>=0; i--)
 {
         cout<<num_arr[i];
 }

}

int* number_to_array(int num)
{
int i=0;
int num_arr[100]; // make dynamic array
  while(num!=0)
  {
    num_arr[i] = num%10;
    num  = num/10;                
    i++;
   }
return num_arr;
}

可能是什么原因?

4

1 回答 1

2
  1. 您正在返回局部变量的地址(数组的名称是它的第一个元素的地址)。这是错误的,因为退出函数后数组将不存在。

  2. int num_arr[100]; // make dynamic array- 它是静态数组,不是动态的。

可能的解决方案:

  • (首选)使用std::vector
  • 使用动态数组 ( int *p = new int[100])

建议 - 学习 C/C++ 的基础知识:指针、数组、函数参数和返回值。

于 2013-07-11T09:29:01.747 回答