修改类内的指针



我在类内操作指针时遇到问题。

#include <iostream>
using namespace std;
class myClass {
public:
void modifyPointer(float *pointer);
};
void myClass::modifyPointer(float *pointer) {
pointer = new float[3];
pointer[0] = 0;
pointer[1] = 1;
pointer[2] = 2;
cout << "Address: " << pointer << endl;
}
int main()
{
float* pointer;
myClass object;
object.modifyPointer(pointer);
cout << "Address: " << pointer << endl;
cout << "Values: " << pointer[0] << "," << pointer[1] << "," << pointer[2]
<< std::endl;
return 0;
}

当我在类中打印指针时,我会得到它的地址,但在主程序中,打印值时会得到一个0地址和一个seg错误。我在如何修改这个指针方面错在哪里?

您正在复制指针,因此在main中看不到更改。您需要通过引用获取指针,如下所示:

void myClass::modifyPointer(float * &pointer) {
pointer = new float[3];
// ...
}

当然,您还必须更改此函数的声明。

这是一个工作演示。

指针和其他对象一样。通过值将对象作为参数传递会创建该对象的副本。这意味着main()中的原始pointer不受影响。由于它不受影响且未初始化,因此使用pointer[any_index]越界访问数组会导致未定义的行为。通过参考:

void modifyPointer(float*& pointer)

相关内容

  • 没有找到相关文章

最新更新