21xrx.com
2024-09-19 09:56:17 Thursday
登录
文章检索 我的文章 写文章
C++结构体指针赋值技巧
2023-07-08 05:46:15 深夜i     --     --
C++ 结构体指针 赋值 技巧 指针赋值

C++中,结构体是一种自定义数据类型,常常用于存储一组相关的数据。结构体指针可以用来访问结构体中的元素,对结构体进行修改或者获取。本文将介绍一些结构体指针赋值的技巧。

1. 指针直接赋值

最简单的结构体指针赋值方式就是直接赋值。例如:


struct Student

  int id;

  string name;

  int score;

;

Student stu1 = "Tom";

Student *pStu = &stu1;

这里定义了一个结构体Student,然后定义了一个stu1实例,并用指针pStu指向了这个实例。这样可以通过指针pStu来访问和修改stu1中的元素。

2. 动态分配内存

有时候需要动态创建结构体实例,此时可以使用new关键字来分配内存,并返回指向这块内存的指针。


Student *pStu = new Student;

pStu->id = 1;

pStu->name = "Tom";

pStu->score = 90;

这里使用了new关键字来动态分配内存,然后使用箭头运算符来访问结构体的成员元素。

需注意的是,使用new创建的指针在使用完成后需要使用delete来释放内存,防止内存泄露。

3. 等式运算

结构体指针之间可以使用等式运算符来赋值,例如:


Student *pStu1 = new Student;

pStu1->id = 1;

pStu1->name = "Tom";

pStu1->score = 90;

Student *pStu2 = pStu1; // 等式运算符

这里将pStu1的值赋给了pStu2,此时pStu1和pStu2都指向同样的内存空间。

4. 复制构造函数

如果某个结构体定义了复制构造函数,那么可以使用这个构造函数来赋值。例如:


struct Student {

  int id;

  string name;

  int score;

  

  Student(const Student& other) // 复制构造函数

    id = other.id;

    name = other.name;

    score = other.score;

  

};

Student stu1 = "Tom";

Student stu2 = stu1; // 复制构造函数

这里结构体Student定义了一个复制构造函数,可以用来从一个实例复制到另一个实例中。

总结

以上是一些常用的结构体指针赋值技巧,值得注意的是,指针在赋值时只是指向了同样的内存空间,并不真正生成新的结构体实例。所以,在修改指针所指向的结构体实例时,需要注意指向此实例的所有指针都会收到影响。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复