如何在屏幕上显示输出
How to show output on screen?
我正在练习Alex Allain书中的数组和指针。
#include <iostream>
#include <fstream>
using namespace std;
int *growArray (int* p_values, int cur_size);
int main ()
{
int next_element = 0;
int size = 10;
int *p_values = new int[ size ];
int val;
cout << "Please enter a number: ";
cin >> val;
while ( val > 0 )
{
if ( size == next_element + 1 )
{
// now all we need to do is implement growArray
p_values = growArray( p_values, size );
}
p_values[ next_element ] = val;
cout << "Please enter a number (or 0 to exit): ";
cin >> val;
}
}
int *growArray (int* p_values, int cur_size)
{
int *p_new_values = new int[ cur_size * 2 ];
for ( int i = 0; i < cur_size; ++i )
{
p_new_values[ i ] = p_values[ i ];
cout << p_new_values[ i ] << endl;
}
delete p_values;
return p_new_values;
}
但是当我执行代码
时Please enter a number: 6
Please enter a number (or 0 to exit): 0
为什么我缺少p_new_values
阵列的屏幕输出?是否允许将cout
放入函数定义中?
if ( size == next_element + 1 )
{
// now all we need to do is implement growArray
p_values = growArray( p_values, size );
}
size
永远不会是next_element + 1
,所以你的growArray
函数永远不会被调用。
请注意,当next_element
仅比当前数组大1时,size
将等于next_element + 1
,因此当next_element
是size-1
时,growArray()
函数将在程序的特定点调用,等等。
if ( size == next_element + 1 )
{
// now all we need to do is implement growArray
p_values = growArray( p_values, size );
}
同样,变量next_element
没有得到更新以使条件成为有效的逻辑。
您可以替换以下行:
p_values[ next_element ] = val;
p_values[ next_element++ ] = val;
最终代码:#include <iostream>
#include <fstream>
using namespace std;
int *growArray (int* p_values, int *cur_size); //Changed
int main ()
{
int next_element = 0;
int size = 10;
int *p_values = new int[ size ];
int val;
cout << "Please enter a number: ";
cin >> val;
while ( val > 0 )
{
if ( size == next_element + 1 )
{
// now all we need to do is implement growArray
p_values = growArray( p_values, &size ); //Changed
}
p_values[ next_element++ ] = val; //Changed
cout << "Please enter a number (or 0 to exit): ";
cin >> val;
}
}
int *growArray (int* p_values, int *cur_size) //Changed
{
*cur_size = *cur_size * 2; //Changed
int *p_new_values = new int[ *cur_size]; //Changed
for ( int i = 0; i < *cur_size; ++i ) //Changed
{
p_new_values[ i ] = p_values[ i ];
cout << p_new_values[ i ] << endl;
}
delete p_values;
return p_new_values;
}
仅在出现使用*growArray()
函数的情况下才尝试打印值,因为打印语句在*growArray()
函数内部。
在函数定义中使用cout
是完全可以的。
[edit]和是的,如上所述,您没有更改参数next_element
,因此应该重新检查您的逻辑。
相关文章:
- 为什么在C的循环中使用printf的Rust代码不显示输出,而在C++的循环中显示std::cout
- C++ 构造函数未显示输出
- 显示C++输出而不返回值
- 为什么输出窗口上没有显示输出?
- 为什么我的代码块上没有显示输出?
- C++ 程序不显示输出
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- 如何从amd gpus的显示输出中获取图像数据
- 插入了 C++ 数组字符串数据,但在显示输出时不显示
- 程序不会在必须时结束并显示输出
- 为什么我的前缀中缀代码不显示输出
- 函数显示输出和输入时出现问题
- 为什么我的程序多次显示输出
- 二进制搜索 - 代码编译并运行后不显示输出
- 字符串流未显示输出
- 为什么当我使用 cout 显示输出时,必须将按位运算符(例如 &,|,等)括在括号中?
- 这段代码可编译,但在visualstudio2015社区中运行(c++)时不显示输出
- Jupyter笔记本未显示C 输出(COUT)
- 尝试拆分循环链表.显示输出但崩溃.在 IDEone 中显示运行时错误
- Q未显示输出