c++ - 指针的大小不指向任何内容

标签 c++ arrays pointers sizeof

我对 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/

相关文章:

ruby - 什么是破坏性的?

c# - 为什么 C# 数组是协变的,它有什么好处?

c++ - 从链表中删除一个节点运行但不删除任何东西

c - 如何不使用指针直接访问内存地址?

c++ - C/C++ Linux GDB API

c++ - 在构建期间强制关闭 Visual Studio 后文件无效或损坏

c++ - 黑屏,没有错误(OpenGL、C++)

python - 如何在 Python 中对数组的列求和

c++ - cout变量值延时

c++ - C++生成随机数的代码