c++复合类型

C++ 复合类型详细介绍

在 C++ 中,复合类型是基于基本数据类型构建的。它们允许我们组合和操作多个数据。主要的复合类型包括数组、指针、字符出、结构体、共用体、枚举和类。

1. 数组

数组是存储固定大小和类型相同的元素序列。

  • 定义 : type arrayName[arraySize];
  • 特点 :
    • 所有元素类型相同。
    • 元素在内存中连续存储。
    • 通过下标(从0开始)访问元素。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int numbers[3] = {1, 2, 3}; // 定义一个整数数组并初始化
    cout << "第一个元素: " << numbers[0] << endl; // 访问第一个元素
    return 0;
}

2. 指针

指针是一种特殊的变量,用于存储另一个变量的地址。

  • 定义 : type *pointerName;
  • 特点 :
    • 存储内存地址。
    • 可以指向任何类型。
    • 通过 * 运算符访问指针指向的值。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    int var = 8; // 普通变量
    int *ptr = &var; // 指针变量,指向 var 的地址
    cout << "var 的值: " << *ptr << endl; // 使用指针访问 var 的值
    return 0;
}

3. 字符串

字符串是字符数组的特殊形式,用于存储文本。

  • 定义 : char strName[strSize];
  • 特点 :
    • 以 null 字符 ' ' 结尾。
    • 可以使用字符串字面量进行初始化。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

int main() {
    char greeting[6] = "Hello"; // 字符串初始化
    cout << "问候语: " << greeting << endl; // 输出字符串
    return 0;
}

4. 结构体

结构体是不同类型数据的集合,用于创建复杂的数据结构。

  • 定义 : struct StructureName { type1 member1; type2 member2; ... };
  • 特点 :
    • 可包含不同类型的数据。
    • 通过点运算符访问成员。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

struct Person {
    char name[50];
    int age;
};

int main() {
    Person person = {"Alice", 30}; // 结构体初始化
    cout << "姓名: " << person.name << ", 年龄: " << person.age << endl; // 访问成员
    return 0;
}

5. 共用体

共用体允许在相同的内存位置存储不同的数据类型,但一次只能使用一个成员。

  • 定义 : union UnionName { type1 member1; type2 member2; ... };
  • 特点 :
    • 成员共享内存。
    • 同一时间只能存储一个成员的值。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

union Data {
    int i;
    float f;
};

int main() {
    Data data;
    data.i = 10; // 赋值给 int 成员
    cout << "Data.i = " << data.i << endl;
    data.f = 23.5; // 赋值给 float 成员
    cout << "Data.f = " << data.f << endl;
    return 0;
}

6. 枚举

枚举用于定义一组命名的整数常量。

  • 定义 : enum EnumName { constant1, constant2, ... };
  • 特点 :
    • 便于阅读和维护。
    • 默认从 0 开始赋值。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

enum Color { red, green, blue };

int main() {
    Color c = blue;
    cout << "枚举值: " << c << endl; // 输出枚举值
    return 0;
}

7. 类

类是创建对象的模板,用于实现面向对象编程。

  • 定义 : class ClassName { accessSpecifier: type memberName; ... };
  • 特点 :
    • 封装数据和函数。
    • 支持继承和多态。

示例代码:

cpp 复制代码
#include <iostream>
using namespace std;

class Box {
public:
    double length;
    void setWidth(double wid) {
        width = wid;
    }
    double getWidth() {
        return width;
    }
private:
    double width;
};

int main() {
    Box box;
    box.length = 10.0; // 公共成员,可以直接访问
    box.setWidth(5.0); // 私有成员,通过公共方法访问
    cout << "盒子宽度: " << box.getWidth() << endl;
    return 0;
}
相关推荐
strive-debug10 小时前
cpp基础入门~~c语言的补足
开发语言·c++
DeepFlow 零侵扰全栈可观测10 小时前
民生银行云原生业务的 eBPF 可观测性建设实践
运维·开发语言·分布式·云原生·金融·php
每天回答3个问题10 小时前
Lua 函数教程
开发语言·ue5·ue4·lua
乌萨奇也要立志学C++10 小时前
【洛谷】离散化专题 模板精讲 + 火烧赤壁 & 贴海报实战
数据结构·c++·算法
后端小张10 小时前
【JAVA 进阶】Spring Boot 中 AOP 切面编程全解析:从基础到实战进阶
java·开发语言·人工智能·spring boot·后端·spring·spring cloud
小龙报10 小时前
【算法通关指南:数据结构与算法篇 】二叉树相关算法题:1.新二叉树 2.二叉树的遍历
c语言·数据结构·c++·人工智能·物联网·算法·深度优先
天天进步201510 小时前
Python全栈项目--基于Django的项目管理系统
开发语言·python·django
h_jQuery10 小时前
vue项目中使用canvas实现手写文字(批注)功能
开发语言·前端·javascript
小北方城市网10 小时前
第 3 课:微服务架构设计与服务治理|从分布式到微服务的进阶实战
开发语言·人工智能·分布式·python·微服务·架构·geo
superman超哥10 小时前
Rust Cell与RefCell的使用场景与区别:内部可变性的精确选择
开发语言·后端·rust·refcell·rust cell·内部可变性·精确选择