Ich lerne über dynamischen Speicher in C++. Was ich als Standardmethode gelernt & Aufheben der Zuordnung dynamisch für jeden Datentyp der Zuweisung ist zum BeispielWie reservieren Sie dynamisch Speicher für ein Char-Array in C++?
//For double,
double* pvalue1 = nullptr;
pvalue1 = new double;
*pvalue1 = 17.3;
delete pvalue1; //free up when I'm done
ABER, für eine char
Array, erfuhr ich, dass es anders gehandhabt hat:
char* pvalue2 = nullptr;
pvalue2 = new char[6];
strncpy(pvalue2,"Hello",sizeof("Hello"));
std::cout << "Pointed-to value of pvalue2 is " << *pvalue2 << std::endl;
std::cout << "Value of pvalue2 is " << pvalue2 << std::endl;
delete [] pvalue2; //free up when I'm done
Dann , auf Eingabeaufforderung:
Pointed-to value of pvalue2 is H
Value of pvalue2 is Hello
- Warum den Zeiger
pvalue2
geben Sie das "pointed" String-Literal anstelle der Speicheradresse? Ist ein "Zeigerwert" nicht immer die Speicheradresse, auf die er zeigt? - Warum gibt Dereferenzierung nur das erste Zeichen im Array?
- Wie kann ich dann die Speicheradresse bekommen, in diesem Fall?
Es ist besser, rohe Zeiger vollständig zu vermeiden und intelligente Zeiger oder Container zu verwenden. – o11c