小编HJS*_*HJS的帖子

为什么只有char*是<Bad Ptr>,而不是其他数据类型?

我正在学习C++中的指针.例如,在初始化指针时

double* pvalue1 = nullptr;//okay
char* pvalue2 = nullptr;  //only this says, "0x00000000 <Bad Ptr>" (in the watch window of Visual C++ 2010)
int* pvalue3 = nullptr;   //okay
Run Code Online (Sandbox Code Playgroud)

为什么只有char类型指针给出Bad Ptr而其他指针类型没有? 在此输入图像描述

我不关心目前的尖端价值观.我没有取消引用它们(这就是为什么上面有这些错误).我只是看着这三个指针的观察窗口.

c++ pointers visual-studio

18
推荐指数
2
解决办法
1837
查看次数

如何在C++中为char数组动态分配内存?

我正在学习C++中的动态内存.作为为任何数据类型动态分配和解除分配的标准方法,我学到的是,例如,

//For double,
double* pvalue1 = nullptr;
pvalue1 = new double;
*pvalue1 = 17.3;
delete pvalue1; //free up when I'm done
Run Code Online (Sandbox Code Playgroud)

但是,对于一个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
Run Code Online (Sandbox Code Playgroud)

然后,在命令提示符下:

Pointed-to value of pvalue2 is H
Value of pvalue2 is Hello
Run Code Online (Sandbox Code Playgroud)
  1. 为什么指针pvalue2给出"指向"字符串文字而不是内存地址?不是"指针值"总是它指向的内存地址吗?
  2. 为什么解除引用只给出数组中的第一个字符? …

c++ arrays pointers char dynamic-memory-allocation

5
推荐指数
2
解决办法
1370
查看次数