我正在学习C++中的动态内存。我所学到的为任何数据类型分配和释放动态内存的标准方法是:
//For double,
double* pvalue1 = nullptr;
pvalue1 = new double;
*pvalue1 = 17.3;
delete pvalue1; //free up when I'm done
但是,对于 char
数组,我了解到它的处理方式不同:
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
然后,在命令提示符中:
Pointed-to value of pvalue2 is H
Value of pvalue2 is Hello
- 为什么指针
pvalue2
返回的是指向的字符串字面量,而不是内存地址?难道“指针值”不总是它所指向的内存地址吗? - 为什么解引用只返回数组的第一个字符?
- 在这种情况下,我怎样才能得到内存地址呢?