C++ 指针和取消引用的指针

C++ 指针和取消引用的指针,c++,arrays,pointers,C++,Arrays,Pointers,我在头文件中有这个声明 private: MyIntegerClass *myArr; MyIntegerClass myIntegerClass; MyIntegerClass *ptr_myIntegerClass = &myIntegerClass; MyIntegerClass是一个类,它有一个保存整数的数据成员。它有两个成员函数——访问器和变异器 这是Array类的cpp文件,这个类为数组分配内存,用值填充数组,最后打印数组 Array::Array() { myA

我在头文件中有这个声明

private:
MyIntegerClass *myArr;
MyIntegerClass myIntegerClass;
MyIntegerClass *ptr_myIntegerClass = &myIntegerClass;
MyIntegerClass是一个类,它有一个保存整数的数据成员。它有两个成员函数——访问器和变异器

这是Array类的cpp文件,这个类为数组分配内存,用值填充数组,最后打印数组

Array::Array() {

    myArr = new MyIntegerClass[10];
    for (int i = 0; i < 10; i++) {
           ptr_myIntegerClass->setNumber(i);
           myArr[i] = *ptr_myIntegerClass;
    }
}

Array::~Array() { }

void Array::printArray() {
    for (int i = 0; i < 10; i++) {
        cout << myArr[i].getNumber() << endl;
}
据我所知,将
*
放在指针前面意味着取消对指针的引用? 正确的?那么作为指针的
myArr
如何存储这个解引用的值呢?
还是我错了,myArr是指针?但是为什么在头文件中用
*
声明它呢?

星号和方括号都会降低取消引用的级别。事实上,
myArr[i]
相当于
*(myArr+i)
*ptr\u myIntergerClass
相当于
ptr\u myIntergerClass[0]
。因此,您的作业相当于

*(myArr+i) = *ptr_myIntergerClass;


它们都是有效的,因为它们的两边都有相同的类型(即
MyIntergerClass
),而左边是可赋值的(即an)。

为什么要使用
名称空间std
?@jeffrey-Eclipse自动生成这个我严重怀疑。是的。鬼魂可以解释这一切。但是,看在上帝的份上,把它去掉。@Jeffrey-其他人也说过日食就是这样做的。
*(myArr+i) = *ptr_myIntergerClass;
myArr[i] = ptr_myIntergerClass[0];