【发布时间】:2015-08-09 13:03:43
【问题描述】:
我正在学习 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给出“指向”字符串字面量 而不是内存地址? “指针值”不总是它指向的内存地址吗? - 为什么解引用只给出数组中的第一个字符?
- 在这种情况下,我怎样才能获得内存地址?
【问题讨论】:
-
最好完全避免使用原始指针,使用智能指针或容器。
标签: c++ arrays pointers char dynamic-memory-allocation