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

响应式中文网站欣赏白石洲附近做网站公司

响应式中文网站欣赏,白石洲附近做网站公司,鲜花网网站开发的目标,跨境一件代发平台🔥个人主页:草莓熊Lotso 🎬作者简介:C研发方向学习者 📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》 ⭐️人生格言:生活是默默的坚持,毅力是永久的…

🔥个人主页:@草莓熊Lotso

🎬作者简介:C++研发方向学习者

📖个人专栏: 《C语言》 《数据结构与算法》《C语言刷题集》《Leetcode刷题指南》

⭐️人生格言:生活是默默的坚持,毅力是永久的享受。

前言:类型系统是编程语言的基础,它定义了数据的表示方式、取值范围和可执行的操作。C 语言和 C++ 作为一脉相承又各有特色的语言,在类型系统设计上既有延续性,又存在显著差异。本篇博客将深入探讨两种语言的内置类型和自定义类型,分析它们的特点与应用场景。


目录

一.内置类型

C 语言的内置类型

C++ 的内置类型

二.自定义类型:开发者构建的数据结构

C 语言的自定义类型

C++ 的自定义类型

三.类型系统的核心差异对比

实践建议


一.内置类型

内置类型(Primitive Types)是编程语言本身提供的基本数据类型,它们直接映射到计算机硬件能够高效处理的数据形式。

C 语言的内置类型

C 语言的内置类型简洁而贴近硬件,主要包括:

  1. 整数类型

    • char:字符类型,通常 1 字节,可表示 ASCII 字符或小整数
    • short/short int:短整数,通常 2 字节
    • int:整数,通常 4 字节,为系统最高效处理的整数类型
    • long/long int:长整数,通常 4 或 8 字节
    • long long:双长整数,通常 8 字节
    • 以上类型均可加signed(有符号)或unsigned(无符号)修饰
  2. 浮点类型

    • float:单精度浮点数,通常 4 字节
    • double:双精度浮点数,通常 8 字节
    • long double:扩展精度浮点数,长度因平台而异
  3. 特殊类型

    • void:表示 "无类型",用于函数返回值或通用指针

示例:

#include <stdio.h>int main() {char c = 'A';           // 字符类型unsigned int age = 30;  // 无符号整数float pi = 3.14f;       // 单精度浮点数double e = 2.71828;     // 双精度浮点数void* ptr = NULL;       // 通用指针printf("char大小: %zu字节\n", sizeof(c));printf("int大小: %zu字节\n", sizeof(age));return 0;
}

C++ 的内置类型

C++ 完全继承了 C 的内置类型,并在此基础上增加了一些扩展:

  1. 布尔类型bool,取值为truefalse,这是 C 语言没有的原生类型
  2. 宽字符类型wchar_t(宽字符)、char16_t(UTF-16 字符)、char32_t(UTF-32 字符)
  3. C++11 后的固定大小整数类型:如int32_tuint64_t等(需包含<cstdint>

示例:

#include <iostream>
#include <cstdint>int main() {bool flag = true;               // 布尔类型int32_t exact_int = 123456;     // 固定32位有符号整数uint64_t big_uint = 1234567890ULL; // 固定64位无符号整数std::cout << "bool大小: " << sizeof(flag) << "字节\n";std::cout << "int32_t大小: " << sizeof(exact_int) << "字节\n";return 0;
}

C++ 的内置类型在 C 的基础上增强了类型安全性和对现代字符编码的支持,bool类型的引入使逻辑判断更加清晰。


二.自定义类型:开发者构建的数据结构

自定义类型(User-Defined Types)允许开发者根据需求创建新的数据类型,是构建复杂程序的基础。

C 语言的自定义类型

C 语言提供了有限但实用的自定义类型机制:

  • 结构体(struct):将不同类型的变量组合在一起
// 定义点结构体
struct Point {int x;int y;
};// 定义学生结构体
struct Student {char name[20];int age;float score;struct Point location; // 结构体嵌套
};
  • 联合体(union):所有成员共享同一块内存空间
// 可存储不同类型数据的联合体
union Data {int i;float f;char str[20];
}; // 大小为20字节(最大成员的大小)
  • 枚举(enum):为整数常量定义有意义的名称
// 定义颜色枚举
enum Color {RED,    // 0GREEN,  // 1BLUE    // 2
};// 定义带初始值的枚举
enum Month {JAN = 1,FEB,MAR,// ... 其余月份DEC
};
  •  typedef :为现有类型创建别名
typedef struct {int hours;int minutes;int seconds;
} Time; // 现在可以用Time代替struct定义typedef unsigned long long ULL; // 为无符号长long创建短别名

C 语言的自定义类型本质上是数据的聚合,缺乏对数据操作的封装。

C++ 的自定义类型

C++ 在 C 的基础上极大地扩展了自定义类型的能力,引入了面向对象的特性:

  • 类(class):C++ 的核心,将数据和操作数据的函数封装在一起
class Circle {
private:// 私有成员(数据隐藏)double radius;const double PI = 3.14159;public:// 构造函数(初始化对象)Circle(double r) : radius(r) {}// 成员函数(操作数据)double getArea() const {return PI * radius * radius;}void setRadius(double r) {if (r > 0) radius = r; // 可以加入数据验证}
};
  • 结构体(struct):在 C++ 中与 class 类似,区别在于默认访问权限为 public
struct Rectangle {double width;double height;// C++结构体可以有成员函数double area() const {return width * height;}
};
  •  联合体(union):C++11 后支持包含非 POD 类型和成员函数
union Variant {
private:int i;float f;public:Variant(int val) : i(val) {}Variant(float val) : f(val) {}int getInt() const { return i; }float getFloat() const { return f; }
};
  •  枚举类(enum class):类型安全的枚举,避免命名冲突
enum class Color {RED,GREEN,BLUE
};enum class TrafficLight {RED,    // 与Color::RED不冲突YELLOW,GREEN
};
  • 其他自定义类型 

- 模板类型 :如std::vectorstd::string等标准容器
-
 类型别名 **:using关键字(比 typedef 更灵活)

using IntPair = std::pair<int, int>;
using StringList = std::vector<std::string>;

C++ 的自定义类型实现了数据与操作的封装,支持访问控制、继承、多态等面向对象特性,极大地增强了代码的模块化和可维护性。


三.类型系统的核心差异对比

特性C 语言C++
内置类型基础整数、浮点、字符类型,无布尔类型继承 C 的所有类型,增加 bool、宽字符类型和固定大小整数类型
自定义类型基础struct、union、enum、typedef继承 C 的所有形式并增强
面向对象支持有(class 为核心)
封装性仅数据聚合,无访问控制支持数据和函数封装,有 public/private/protected 控制
类型安全较弱,隐式转换较多较强,引入 enum class 等安全类型
扩展性有限强大,支持模板、继承、多态等

实践建议

1. C 语言 :

  • 利用 struct 组织相关数据
  • 使用 enum 使代码更具可读性
  • 合理使用 typedef 简化复杂类型声明
  • 注意 union 的内存共享特性,避免数据访问冲突

2.C++ 语言 :

  • 优先使用 class 封装数据和操作
  • 用 enum class 替代传统 enum,提高类型安全性
  • 利用 using 创建清晰的类型别名
  • 充分利用标准库提供的丰富自定义类型(如std::stringstd::vector
  • 对于简单数据聚合可使用 struct,需要封装和行为时使用 class

往期回顾:

【C++】函数返回方式详解:传值、传引用与传地址

【C++】--指针与引用深入解析和对比
【C++】--函数参数传递:传值与传引用的深度解析

结语:C 语言的类型系统简洁高效,贴近硬件,适合系统级编程;C++ 则在 C 的基础上构建了更为丰富和安全的类型系统,特别是通过 class 实现的面向对象机制,为大型复杂程序提供了更好的抽象和封装能力。如果文章对你有帮助的话,欢迎评论,点赞,收藏加关注,感谢大家的支持。

http://www.dtcms.com/a/548134.html

相关文章:

  • 腾讯建设网站视频视频视频网站百度seo关键词优化
  • 中小企业网站建设市场网站建设费用包括哪些内容
  • 有哪些可以做问卷的网站登封免费网站建设
  • 软文网站名称网站开发所遵循的
  • 标准化建设考评网站qq交流群如何使用
  • 网站做了301怎么查看跳转前网站wordpress 插件安装失败
  • 跨境电商平台网站it外包服务提供商有哪些
  • 阜阳微商城网站建设wordpress 本地 插件
  • 厦门做网站哪家公司好北京众合天下管理咨询有限公司
  • 汕头 网站建设全国十大跨境电商公司排名
  • js进入网站时有指导怎么做新开传奇网站刚开一秒第一区
  • 同仁行业网站建设报价网站图片怎么优化
  • php网站留言板模板下载开网站做网站
  • 开网站设计公司多少钱无锡室内设计公司
  • 门户网站建设公开情况自查深圳app开发红孩儿
  • 南沙网站建设wwiw北京室内设计公司排行榜
  • wordpress网站管理顺德营销型网站建设
  • 网站地址申请深圳石岩建网站
  • 安平县做百度网站电话网站即时到账要怎么做
  • 高端制作网站服务中国小康建设网是骗子网站吗?
  • 网站扫码怎么做wordpress 评论500
  • 做网站的版式会侵权吗黄村专业网站建设公司
  • 沈阳定制网站制作软文营销写作技巧有哪些?
  • 网站建设与规划心得wordpress设定密码
  • 上海的网站建设做钓鱼网站教程
  • 我做的电影网站为什么百度搜索不到湖南长沙理工大学
  • 国内建站公司seo学徒是做什么
  • dede模板蓝色大气简洁企业网站模板下载网站开发建设价格
  • 电子商务网站建设臧良运课后答案网站建设原则应考虑哪些
  • 付费设计网站上海网站建设 润