当前位置: 首页 > wzjs >正文

网站设计的主要内容2021年重大新闻事件

网站设计的主要内容,2021年重大新闻事件,免费装修设计图,免费做网站建设🎯 C 结构体深入浅出详解:从基础到进阶的全面指南 📅 更新时间:2025年6月7日 🏷️ 标签:C | 结构体 | 数据封装 | 面向对象 | 现代C 文章目录 前言🌟 一、什么是结构体?为什么需要它…

🎯 C++ 结构体深入浅出详解:从基础到进阶的全面指南
📅 更新时间:2025年6月7日
🏷️ 标签:C++ | 结构体 | 数据封装 | 面向对象 | 现代C++

文章目录

  • 前言
  • 🌟 一、什么是结构体?为什么需要它?
    • 1. 结构体的三大核心价值
    • 2.为什么选择结构体?
  • 📌 二、结构体基础:定义与使用
    • 1.结构体定义
    • 2.使用结构体
    • 3. 实践建议
  • 🧭 三、结构体进阶:添加成员函数
    • 1.定义成员函数
    • 2.关键点
    • 3.实践建议
  • ⚙️ 四、结构体初始化:现代化方式
    • 1.聚合初始化(C++11 前)
    • 2.构造函数初始化(推荐)
    • 3.统一初始化(C++11 及以上)
    • 4.实践建议
  • 🧩 五、嵌套结构体:复杂数据组织
    • 1.嵌套结构体示例
    • 2. 关键点
    • 3.实践建议
  • 🎯 六、结构体与类:异同点分析
    • 1.结构体 vs 类
    • 2.示例代码
    • 3.实践建议
  • 🔍七、结构体指针
    • 1.示例:使用结构体指针
  • 💡 八、使用 typedef 简化结构体定义
    • 1.语法:
    • 2.代码示例:
  • 总结


前言

提示:这里可以添加本文要记录的大概内容:

✨ 本文将以通俗易懂的方式,循序渐进地讲解 C++ 中结构体的定义、用法及高级特性,涵盖基础语法、成员函数、嵌套结构体、与类的关系以及现代 C++ 中的应用。通过清晰的示例代码、常见误区分析和最佳实践建议,带你从初学者到进阶开发者,彻底掌握结构体的核心原理与应用场景,助你编写更高效、更规范的 C++ 代码


提示:以下是本篇文章正文内容,下面案例可供参考

🌟 一、什么是结构体?为什么需要它?

结构体(struct) 是 C++ 中用于组合多种数据类型的自定义数据结构,用于将相关数据组织在一起。它是 C++ 面向对象编程的基础,也是(class)的雏形

1. 结构体的三大核心价值

数据封装:将多个相关变量组织为一个整体,便于管理。

代码可读性:通过语义化的结构体名称,清晰表达数据关系。

扩展性:支持成员函数、访问控制等,接近类的功能

2.为什么选择结构体?

在需要表示一组相关数据(如学生信息、坐标点)时,结构体提供了简单且直观的解决方案。相比单独定义变量,结构体让代码更模块化、更易维护

📌 二、结构体基础:定义与使用

1.结构体定义

结构体使用 struct 关键字定义,包含多个成员变量

struct Point {int x;  // x 坐标int y;  // y 坐标
};

2.使用结构体

定义结构体后,可创建实例并访问其成员

访问成员用符号 . 来访问

#include <iostream>
struct Point {int x;int y;
};
int main() {Point p1;       // 创建结构体实例p1.x = 10;      // 访问并赋值p1.y = 20;std::cout << "Point: (" << p1.x << ", " << p1.y << ")" << std::endl;return 0;
}输出:
Point: (10, 20)

3. 实践建议

命名清晰:结构体名称应反映其用途,如 Point 表示坐标点

初始化成员:定义实例后,及时初始化成员变量,避免未定义行为

默认公有:结构体成员默认是 public,可直接访问

🧭 三、结构体进阶:添加成员函数

结构体不仅可以存储数据,还可以包含成员函数,增强功能性

1.定义成员函数

成员函数直接在结构体中声明和定义,用于操作成员变量

#include <iostream>
#include <cmath>
struct Point {int x;int y;// 计算两点距离double distanceTo(const Point& other) const {return std::sqrt(std::pow(x - other.x, 2) + std::pow(y - other.y, 2));}
};
int main() {Point p1 = {3, 4};Point p2 = {0, 0};std::cout << "Distance: " << p1.distanceTo(p2) << std::endl; // 输出 5return 0;
}

2.关键点

这里的两个const非常重要,有不同的作用

double distanceTo(const Point& other) const {return std::sqrt(std::pow(x - other.x, 2) + std::pow(y - other.y, 2));}

第一个const

const Point& other  常量引用

首先这里的引用是可以避免拷贝浪费资源
然后这里的const避免other在函数内被修改

第二个const

double distanceTo(const Point& other) const 

是在函数后的这个const
在这个函数内部,你只能读取当前对象的成员变量(如 x, y),不能修改它们

3.实践建议

为常用操作定义成员函数,如计算、打印等。

使用 const 成员函数增强代码安全性

避免在结构体中定义复杂逻辑,保持简单性

⚙️ 四、结构体初始化:现代化方式

C++ 提供多种初始化结构体的方式,现代 C++(C++11 及以上)推荐使用初始化列表构造函数

1.聚合初始化(C++11 前)

Point p1 = {10, 20}; // 按成员顺序初始化
#include <iostream>
using namespace std;
struct Point 
{int x;int y;
};
int main() 
{Point p{10,20};// 按成员顺序初始化cout<<"x="<<p.x<<endl;cout<<"y="<<p.y<<endl;return 0;
}输出:
x=10
y=20

2.构造函数初始化(推荐)

Point(int x_, int y_) : x(x_), y(y_) {} // 构造函数
#include <iostream>
using namespace std;
struct Point 
{int x;int y;Point(int _x,int _y):x(_x),y(_y){};
};
int main() 
{Point p(10,20);//通过构造函数初始化cout<<"x="<<p.x<<endl;cout<<"y="<<p.y<<endl;return 0;
}输出:
x=10
y=20

3.统一初始化(C++11 及以上)

Point p1{10, 20}; // 统一初始化语法
#include <iostream>
using namespace std;
struct Point 
{int x;int y;
};
int main() 
{Point p{10,20};cout<<"x="<<p.x<<endl;cout<<"y="<<p.y<<endl;return 0;
}输出:
x=10
y=20

4.实践建议

优先使用构造函数:提供明确的初始化逻辑,减少错误

统一初始化:现代 C++ 推荐 {} 语法,简洁且通用

避免未初始化未初始化的成员可能导致未定义行为

🧩 五、嵌套结构体:复杂数据组织

结构体可以嵌套定义,用于表示更复杂的数据结构

1.嵌套结构体示例

#include <iostream>
#include <string>
struct Address {std::string city;std::string street;
};
struct Student {std::string name;int age;Address address; // 嵌套结构体void print() const {std::cout << "Name: " << name << ", Age: " << age<< ", Address: " << address.city << ", " << address.street << std::endl;}
};
int main() {Student s1 = {"Alice", 20, {"Beijing", "Main St"}};s1.print(); return 0;
}输出:
Name: Alice, Age: 20, Address: Beijing, Main St

2. 关键点

嵌套访问:通过. 操作符逐层访问嵌套成员,如 s1.address.city

初始化嵌套结构体:使用嵌套初始化列表 {} 简化代码。

模块化设计嵌套结构体适合表示层次化数据

3.实践建议

合理嵌套仅在数据有明确层次关系时使用嵌套结构体

保持简单避免过深的嵌套,防止代码复杂化。

封装操作为嵌套结构体提供成员函数,简化访问

🎯 六、结构体与类:异同点分析

在 C++ 中,struct 和 class 非常相似,但有细微差异

1.结构体 vs 类

在这里插入图片描述

2.示例代码

#include <iostream>
struct PointStruct {int x, y;void print() const { std::cout << "(" << x << ", " << y << ")" << std::endl; }
};
class PointClass {
public://必须加public转为公共属性 不然外界无法访问!!!!!!!!!!!!!!!!!!!!!!int x, y;void print() const { std::cout << "(" << x << ", " << y << ")" << std::endl; }
};
int main() {PointStruct ps = {1, 2};PointClass pc = {3, 4};//如果不是公共属性都不能这样初始化!!!!!!!ps.print(); // 输出 (1, 2)pc.print(); // 输出 (3, 4)return 0;
}

3.实践建议

简单数据用 struct:如坐标点、配置数据,优先用 struct。

复杂逻辑用 class:需要私有成员或复杂行为时用 class。

统一风格:团队开发时,遵循项目约定选择 struct 或 class

🔍七、结构体指针

可以创建指向结构体的指针,并通过指针访问结构体成员

1.示例:使用结构体指针

struct Car {std::string brand;std::string model;int year;
};int main() {Car car = {"Toyota", "Camry", 2020};Car* carPtr = &car;std::cout << "品牌: " << carPtr->brand << std::endl;std::cout << "型号: " << carPtr->model << std::endl;std::cout << "年份: " << carPtr->year << std::endl;return 0;
}输出:
品牌: Toyota
型号: Camry
年份: 2020

💡 八、使用 typedef 简化结构体定义

使用 typedef(或 using 关键字)可以为结构体类型创建别名,使代码更简洁

1.语法:

typedef struct {int id;std::string name;float grade;
} Student;// 或者使用 `using`(C++11 及以上)
using Student = struct {int id;std::string name;float grade;
};

2.代码示例:

#include <iostream>typedef struct {int id;std::string name;float grade;
} Student;int main() {Student s1 = {1004, "Daisy", 95.0f};std::cout << "学生ID: " << s1.id << ", 姓名: " << s1.name << ", 成绩: " << s1.grade << std::endl;return 0;
}输出:
学生ID: 1004, 姓名: Daisy, 成绩: 95

总结

C++ 结构体是数据封装的强大工具,从简单的数据聚合到包含成员函数、嵌套结构,乃至与现代 C++ 特性的结合,结构体在各种场景中都不可或缺。正确使用结构体能显著提升代码的可读性、可维护性和性能

如果你觉得本文对你有帮助,不妨点赞 + 收藏 + 关注,更多 C++ 系列教程将持续更新 🔥!

http://www.dtcms.com/wzjs/138223.html

相关文章:

  • h5企业网站定制排名收录优美的图片
  • 青岛网站制作公司哪家正规上海还能推seo吗
  • 做一个展示型网站多少钱渠道推广策略
  • 网站数据库怎么做同步吗长尾关键词挖掘词
  • 深圳 做公司网站给你一个网站怎么优化
  • h5必备网站搜索大全引擎入口
  • 施工企业年度工作计划红头文件seo承诺排名的公司
  • 那个网站可以找人做兼职百度电话客服24小时人工服务热线
  • 建立网站有什么要求产品推广方案范例
  • 上海高档网站建设中国十大热门网站排名
  • 淘宝网站制作建设是真的吗seo的研究对象
  • 静态网页制作网站百度 seo 工具
  • 网站做产品的审核工作怎么样如何建立一个自己的网站啊
  • 做网站服务器在哪买长沙seo霸屏
  • 有没有专门做建材的网站软文平台
  • wordpress 缓存下不计数站长工具seo综合查询推广
  • 合肥做网站哪家公司好游戏推广员上班靠谱吗
  • 哪些网站是用java做的制作网页设计公司
  • 什么是同ip网站北京互联网公司
  • 上海搬家公司收费价目表2021关于seo的行业岗位有哪些
  • 网站缩略图制作免费的外贸b2b网站
  • 网站阴影如何快速推广自己的品牌
  • 绵阳做网站哪家公司好chatgpt网站
  • 商城项目seo入门教程
  • 网站建设典型发言黄页88
  • 劫持网站代做排名营销推广技巧
  • 我要做一个网站 需要营业范围吗网络营销品牌案例
  • 做企业网站用二级域名好吗百度推广客服投诉电话
  • 呼和浩特重大消息宁波seo运营推广平台排名
  • 金科科技 做网站电脑课程培训零基础