c++ 定义一个结构体 成员变量为动态分配的不定长数组
时间: 2023-10-16 20:10:43 浏览: 216
可以使用指针和动态内存分配来实现结构体成员变量为动态分配的不定长数组,示例代码如下:
```c++
struct MyStruct {
int* arr; // 成员变量为指向动态分配数组的指针
int size; // 数组大小
MyStruct(int s) { // 构造函数中动态分配数组
size = s;
arr = new int[size];
}
~MyStruct() { // 析构函数中释放内存
delete[] arr;
}
};
```
在使用时,先创建结构体对象,并指定数组大小,然后就可以通过指针访问数组元素了,示例代码如下:
```c++
int main() {
MyStruct ms(10); // 创建结构体对象,并指定数组大小为10
for (int i = 0; i < ms.size; i++) {
ms.arr[i] = i; // 访问数组元素
}
return 0;
}
```
需要注意的是,在使用完后要记得调用析构函数释放内存,防止内存泄漏。
相关问题
c++使用结构体或类 其成员变量为动态分配的不定长数组
在 C++ 中,如果需要使用动态分配的不定长数组作为结构体或类的成员变量,可以使用指针成员。具体来说,可以定义一个指向动态分配数组的指针成员,并在构造函数中动态分配数组空间。
以下是一个示例代码:
```c++
#include <iostream>
using namespace std;
class MyClass {
public:
MyClass(int n) {
arr = new int[n];
size = n;
}
~MyClass() {
delete[] arr;
}
void print() {
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
}
private:
int* arr;
int size;
};
int main() {
MyClass obj(5);
for (int i = 0; i < 5; i++) {
obj[i] = i;
}
obj.print();
return 0;
}
```
在上面的代码中,我们定义了一个名为 MyClass 的类,它包含一个指向动态分配数组的指针成员 arr 和一个表示数组大小的整数成员 size。在 MyClass 的构造函数中,我们使用 new 运算符动态分配一个大小为 n 的整数数组,并将指针赋值给 arr 成员变量。在 MyClass 的析构函数中,我们使用 delete[] 运算符释放动态分配的数组空间。
在主函数中,我们创建了一个 MyClass 类型的对象 obj,并在构造函数中传入数组大小为 5。然后,我们使用循环给 obj.arr 数组赋值,并调用 obj.print() 函数输出数组元素。
需要注意的是,由于动态分配的数组空间需要手动释放,因此需要在 MyClass 的析构函数中释放空间。同时,在使用指针成员时,需要确保指针指向的数组空间已经被分配和初始化。
阅读全文