这里是代码:
int *num_arr = number_to_array(num);
cout<<"\nNum aaray:"<<*(num_arr+1);
display(num_arr, digit_count);
此处的cout语句显示正确的值,但display()不显示。显示正在显示垃圾值
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;
}
可能是什么原因?
答案 0 :(得分:2)
您正在返回局部变量的地址(数组的名称是它的第一个元素的地址)。这是错误的,因为退出函数后数组不存在。
int num_arr[100]; // make dynamic array
- 它是静态数组,不是动态的。
可能的解决方案:
std::vector
int *p = new int[100]
)提案 - 学习C / C ++的基础知识:指针,数组,函数参数和返回值。