我对 sizeof() 有疑问。我之前创建的类中有一个指针。并且这个指针被初始化为
static Book* books;
所以它没有任何意义。我想确定指针是否指向任何数组。所以第一个问题是解决方案是什么,因为我可以在运行时更改此指针的地址以指向一个数组。我尝试使用 sizeof(pointer) 但它对我的帮助不够。返回的是数字4。我可以通过这种方式评估它是否引用任何东西。
这是我的课:
class Tool
{
private:
static Book* books;
public:
static char* pgetStringIntoArray(string);
static string* pgetStringFromArray(char*);
static void printCharArray(char*);
static bool* addBook(Book*);
static bool* isStored(Book*);
};
这是有问题的方法:
bool* Tool::isStored(Book* book)
{
bool* stored = new bool(false);
if(Tool::books)
{
cout << "NULL" << endl;
} else {
return stored;
}
}
最佳答案
不,您不能使用 sizeof
来确定指针是否指向某物。 sizeof
在同一体系结构中,指针的大小始终相同。
你可以这样做:
Tool::Book* books = NULL;
而且,如果您想检查它是否指向有效的非空值,只需执行以下操作:
if (Tool::books) {
// books is pointing to something
}
无论何时为指针(数组)分配内存,如果分配成功,指针将不再为空。由于您使用的是 C++
,请考虑使用 std::vector
来保存动态维度数组而不是数组(指针)。
关于c++ - 指针的大小不指向任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12123660/