C++ 为什么指向类数组的全局指针与本地指针不同?

C++ 为什么指向类数组的全局指针与本地指针不同?,c++,C++,在下面的代码中,当它全局初始化时,只能使用点运算符访问,但当它在本地初始化时,只能使用箭头运算符访问。为什么会这样?是关于extern关键字的吗 a_class* a_ptr[2]{new a_class()}; 没有这样的区别: class a_class { public: int x; }; a_class* a_ptr[2]{new a_class()}; int main() { a_class* b_ptr[2]{new a_class()};

在下面的代码中,当它全局初始化时,只能使用点运算符访问,但当它在本地初始化时,只能使用箭头运算符访问。为什么会这样?是关于extern关键字的吗

a_class* a_ptr[2]{new a_class()};

没有这样的区别:

class a_class
{
    public:
    int x;
};

a_class* a_ptr[2]{new a_class()};

int main()
{
    a_class* b_ptr[2]{new a_class()};

    a_ptr[0]->x = 0;
    b_ptr[0]->x = 0;
}
两者都可以以相同的方式访问


这是否回答了您的问题?您好,不,我有问题的是初始化本身,当它全局使用extern关键字时,它只能由点运算符访问,但当它是本地非extern时,它只能由arrow运算符访问,如果它们是相同的代码,我不知道为什么两者都不一样。@您好,当它是全局代码和本地代码时,您访问它的方式没有区别。在你认为有差异的地方张贴代码。太多的“it”。请尽量多用名词,少用代词,这样人们就有更好的机会理解你。这也将有助于显示有效和无效的表达。好的,解决它谢谢你的帮助,当然我会小心地问一个问题,因为我不擅长英语。谢谢!哈哈,这是我的错,把它放在一个全局头extern a_类上,并在一个cpp文件上初始化它,在头文件中它只是一个指针,而在cpp文件中它是一个指向数组的指针,编译器读取头文件,所以我认为它有区别。