检查指针是否为数组?

时间:2018-10-08 22:31:23

标签: c++ arrays pointers

我怎么知道指针是否为数组? 示例:

    int main()
{
    int *a=new int [3] { 1,2,3 };
    std::cout << *a;
}

我们有一个“ a”指针,如何检查其将自身保持为数组还是单个变量?

2 个答案:

答案 0 :(得分:2)

  

我怎么知道指针是否是数组?

您不能仅根据指针值(也不是类型)来找到它。

您必须知道它是否存在。如果您不知道该怎么做,则必须查看指针的来源。

答案 1 :(得分:-3)

使用指针算法,您可以确定已初始化指针是指向数组还是指向单个变量,例如,对这样的代码进行编码将对您有所帮助,将其添加为“ 1”,您将指出编译器可以访问变量'a'的内存地址所在的下一个位置,如果它指向NULL,那么在'a'的相邻位置还没有分配内存,因此通常指向单个变量的指针。

int *a = new int [3] {1,2,3};
if (*(a+1)==NULL)
    cout<<"single variable";
else
    cout<<"array";