日志15

在 C++ 中,结构体指针 是指向结构体的指针,用于操作结构体类型的数据。以下是关于结构体指针的一些基本知识:

1. 定义结构体

首先,需要定义一个结构体:

#include <iostream>
using namespace std;

struct Student {
    int id;
    string name;
    double score;
};

2. 创建结构体指针

创建结构体变量和结构体指针的方式如下:

(1)直接指向结构体变量:

Student s1 = {1, "Alice", 90.5}; // 定义结构体变量
Student* p = &s1;               // 指针指向结构体变量

// 使用结构体指针访问成员
cout << "ID: " << p->id << endl;
cout << "Name: " << p->name << endl;
cout << "Score: " << p->score << endl;

注意

  • p->id 等价于 (*p).id,使用 -> 运算符更加简洁。

(2)动态分配内存:

使用 new 关键字动态创建结构体变量:

Student* p = new Student; // 动态分配内存
p->id = 2;
p->name = "Bob";
p->score = 88.0;

cout << "ID: " << p->id << endl;
cout << "Name: " << p->name << endl;
cout << "Score: " << p->score << endl;

delete p; // 释放内存

3. 结构体指针数组

如果需要存储多个结构体指针,可以使用结构体指针数组:

Student s1 = {1, "Alice", 90.5};
Student s2 = {2, "Bob", 88.0};

Student* students[2] = {&s1, &s2};

for (int i = 0; i < 2; ++i) {
    cout << "ID: " << students[i]->id << endl;
    cout << "Name: " << students[i]->name << endl;
    cout << "Score: " << students[i]->score << endl;
}

4. 传递结构体指针给函数

通过指针传递结构体到函数,可以避免拷贝大数据,提升性能:

void printStudent(const Student* p) {
    cout << "ID: " << p->id << endl;
    cout << "Name: " << p->name << endl;
    cout << "Score: " << p->score << endl;
}

int main() {
    Student s1 = {1, "Alice", 90.5};
    printStudent(&s1); // 传递指针
    return 0;
}

小结

  • 使用结构体指针可以更高效地访问结构体成员。
  • 动态分配的结构体变量需要及时释放内存(delete)。
  • 通过指针传递结构体数据给函数,能够减少数据拷贝
全部评论

相关推荐

2024-12-12 02:38
门头沟学院 后端
先说说我的情况吧,我的学历是民办二本,我也知道学校不好,所以我没指望过靠学校的什么光环或者说靠学校的招聘会什么的,也是一直从大一寒假开始,直到现在一直学的Java,其实我到大二暑假的时候就已经接触微服务了,可是当时学得不怎么扎实,八股文也是大三就知道有这么个东西了,期间也是断断续续的看,就是效率不咋高,因为我平常没啥总结的,就是看到啥算啥,现在想着有有点后悔的,早知道一开始就扎扎实实的学了,项目也是实操得少,简单过了一遍&nbsp;看了视频&nbsp;大致了解过程&nbsp;当时我想得是赶快过几个项目,然后就马上去找实习,结果是boss找实习根本面试都没几个,还是暑假的时候去了一家外包实习就是亚信科技,但是也没学什么,简历也是包装了,现在简历就是一段实习,然后两个烂大街的项目,然后现在八股也在看,但是我是真的不想直接背,还是想理解为主,所以其实八股没怎么认真看过,一直在看视频学习,还买了很多书,想着好好看一下,平常也做好笔记,扎扎实实学好,但是现在看来感觉没啥时间了,我现在已经是大四了,真不知道该怎么办了,不知道是好好沉淀备战春招呢,还是说去找个实习再加一段实习经历呢?之前有两个实习我因为我一直想着沉淀,而且是外包,而且还是外地,就一直没想着去,现在感觉有那么点后悔了,其实是不是混段经历也不错呢&nbsp;还是武汉3500&nbsp;上海3300包住的&nbsp;虽然是外包,但是薪资还行吧,但是我都放弃了,还有一个本地的,就是要去工厂里面驻场,也是放弃了,现在也是焦虑得不得了,不知道怎么办了,现在家里还有驾照要考,唉,都凑在一块了。兄弟们你们说到底怎么办呢,兄弟们,客观来说,我接下来应该怎么办呢?😭😭😭
KPLACE:我一样,但是事情得一件一件来,不重要的先放掉,我们不可能每一件事都做好,找准一两件再去做
点赞 评论 收藏
分享
来上海快上一年的班了,记录一下今年的工作。刚来到上海的时候,找到了一家c#开发,但是技术太久,业务也是涉及到OA系统业务。正月初八上班,正月初十的时候和老板说明了情况,也是离开了。正月十一重新找工作,正月十三接到了一家公司的面试,后来面试通过了,正月十六就开始实习。刚来的时候hr跟我介绍,团队中的人都是刚毕业没几年的,和他们相处不会有代沟。事实确实如此。团队里面的每个人都比较友好,技术方面也帮助我解决。但是等我来到这里一段时间之后,因为合同问题,有几个人被裁掉了,留下来两个老员工和我。后来陆陆续续来了几个实习生,关系都还不错。在这家公司学到了Java后端开发,VUE前端开发。一直到今年的6月18号。公司通知我们裁员,最后大家也是离开了。离开之后我们大家也是一块玩了一个多星期,偶尔打打游戏,聊聊天,吃吃饭,很开心。但最后又踏上了找工作的路。到了6.23号,参加了一个公司的笔试和面试。最后就是等通知。到了6.24号,另一家公司跟我打电话。最后花了三天的时间两轮技术面,一轮总监面,一轮hr面。最终也是顺利拿到了这家公司的offer。其实上面提到的公司也发了offer,但是是同一天的,所以就选择了现在这家。我刚毕业,可能不懂什么其他的待遇,但是谁给的钱多还是会比较大小的,哈哈哈哈。也主要因为这家公司是甲方公司,开到15薪。7月1号入职这家公司,公司的人员分配我觉得挺不合理的吧。刚进公司的时候,招我的那个人也是做开发的,但是他又找了份工作,所以带了我一个月他就走了。最后就我一个开发,加上刚毕业,很多事情都是没得选。公司不是互联网公司,系统基本上处于维护阶段。刚开始的时候工作效率比较低,又有小程序、app(ios和安卓)、web前端、web后端、打包、部署……人都麻了。最后也是习惯了。一直到现在,一个人什么东西都慢慢搞得定了,偶尔也会忙里偷闲。期间因为系统的请求数量过高,导致系统宕机。经过一个月不断修改测试,也是解决掉了。在这家公司学到了微信小程序、uniapp的开发、上线,系统的部署、Java后端、nodejs后端等、web前端、公网与局域网打通等。目前规划,先在这里呆一年,积攒工作经验在去找更好一点的平台吧。
点赞 评论 收藏
分享
2024-12-30 14:26
已编辑
门头沟学院 Java
先介绍下bg211本计算机,实习只有个研究所实习,没学到什么东西秋招主要投了互联网的后端java和国企技术方面是7月才开始学算法和八股,项目从网上找的项目也没吃透,简历上编了个实习,说这个项目还是实习做的;秋招到现在到手的就两个明确的offer,都是车企,一个是比亚迪,一个是东风,目前签了东风面试倒是很多,但是过的很少,互联网就途虎和虾皮还有一个小厂的流程到了二三面还都挂了,58同城三面过了一直在排序估计泡不出来(小厂二面其实过了,但是说有加班,而且要我去线下三面就没去)国企方面自己也报的太高了,什么银行总行,运营商市行都报了,结果到了线下终面发现全是9硕,这我面个✔吧总之是个人技术还是不过关,项目方面需要自己从头搭一个项目,把它吃透,简历上少写编的东西,春招转战测开(顺带一提我同时还在准备我老家的选调公务员考试),每天学的很累,想4️⃣#秋招# #秋招找不到# ———————————————————已offer东风比亚迪———————————————————流程中人保市软开一面完调剂卓望待三面南京小米二面58同城三面完济南联通终面———————————————————已挂腾讯一面挂美团一面挂途虎二面挂虾皮二面挂石家庄电信市公司终面挂江苏银行总行终面挂中广核二面挂招商银行天津分行二面挂满帮一面挂滴滴一面挂其他公司暂时想不起来了
点赞 评论 收藏
分享
2024-12-28 22:58
门头沟学院 EHS工程师
长江存储 厂务 12K×14.4 硕士985
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务