Ich habe den folgenden Code:C++ Speicherstelle mit Array-Zeigern
#include <iostream>
using namespace std;
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 ];
}
delete p_values;
return p_new_values;
}
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)
{
cout<< "Im in If"<<endl;
p_values = growArray(p_values, size);
}
p_values[ next_element ] = val;
cout << "Please enter a number (or 0 to exit): ";
cin >> val;
}
}
Dieser Code wird dynamiclly Speicher zuordnet. Ich kann alles in diesem Code verstehen, außer einer Sache. Was ist der Zweck dieses wenn? Egal wie viele Eingaben ich gebe, Programm wird nie in das gehen, wenn.
'next_element' wird nie in der Schleife aussehen aussehen sollte geändert aussehen ? –
Das richtige Werkzeug, um solche Probleme zu lösen, ist Ihr Debugger. Sie sollten Schritt für Schritt durch Ihren Code * gehen, bevor Sie auf Stack Overflow nachfragen. Für weitere Hilfe lesen Sie bitte [Wie kleine Programme zu debuggen (von Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Zumindest sollten Sie Ihre Frage bearbeiten, um ein [minimales, vollständiges und verifizierbares] (http://stackoverflow.com/help/mcve) Beispiel einzufügen, das Ihr Problem zusammen mit den Beobachtungen, die Sie in der Debugger. –
Das ist mir auch aufgefallen ... Dieser Code stammt aus einem Buch. Ich denke nicht, dass es falsch ist. Aber ich weiß nicht .. –