随笔分类 - 【HarmonyOS】
摘要:对象的内存布局 非虚函数类对象 对于不包含虚函数的类,对象的内存布局相对简单,其成员变量按照声明的顺序依次存储。例如:class SimpleClass { private: int num; double d; public: SimpleClass(int n, double dd) : num
阅读全文
posted @ 2024-10-06 21:33
西北野狼
摘要:概念 在C++中,dynamic_cast是一种运行时类型转换操作符。它主要用于在类的层次结构中进行安全的向下转换(将基类指针或引用转换为派生类指针或引用)。这种转换基于对象的实际类型进行检查,以确保转换的安全性。 使用条件 为了使用dynamic_cast,类层次结构中必须包含虚函数。这是因为dy
阅读全文
posted @ 2024-10-05 21:20
西北野狼
摘要:概念 在C++中,常类型转换主要涉及到const_cast操作符,用于在特定情况下对const(常量)限定符进行处理。const关键字在C++中有重要意义,它表示被修饰的对象是常量,不能被修改。但在某些特殊情况下,需要在不破坏常量性语义的前提下,进行与常量相关的操作转换。 const_cast的使用
阅读全文
posted @ 2024-10-05 21:18
西北野狼
摘要:概念 在C++中,reinterpret_cast被称为重新解释类型转换。它是一种强制类型转换操作符,用于将一种数据类型转换为另一种几乎完全不相关的数据类型。这种转换不进行任何数据的重新格式化或转换操作,只是简单地将数据的二进制表示重新解释为新的类型。 语法 语法形式为:reinterpret_ca
阅读全文
posted @ 2024-10-05 21:16
西北野狼
摘要:静态类型转换(static_cast) 概念 static_cast是C++中的一种类型转换操作符,用于在编译时进行类型转换。它主要用于具有明确的、编译器可以在编译阶段确定的类型转换关系的情况。这种转换通常在相关类型之间进行,例如基本数据类型之间的转换,或者在类层次结构中的向上转换(将派生类指针或引
阅读全文
posted @ 2024-10-05 21:13
西北野狼
摘要:static_cast 基本概念 static_cast主要用于在相关类型之间进行转换,这些类型之间存在某种隐式转换关系。它在编译时进行检查,是一种比较安全的类型转换方式。 适用场景 基本数据类型转换:例如将int转换为double,或者double转换为int(会截断小数部分)。int numIn
阅读全文
posted @ 2024-10-05 20:59
西北野狼
摘要:概念 在C++中,命名空间(namespace)是一种将代码中的标识符(如变量名、函数名、类名等)进行分组和隔离的机制。它可以避免不同代码模块之间的命名冲突,提高代码的可维护性和可移植性。 命名空间的定义 基本语法为:namespace 命名空间名称 { // 在这里定义变量、函数、类等 } 例如:
阅读全文
posted @ 2024-10-05 13:53
西北野狼
摘要:C++对C的扩展主要体现在以下几个方面: 语法增强: 变量声明位置更灵活:在C语言中,函数内的所有局部变量必须在函数开头的块内进行声明。而C++放松了这一限制,可以在函数内的任何位置声明变量,只要在使用该变量之前进行声明即可。例如: void someFunction() { // C++中可以在循
阅读全文
posted @ 2024-10-03 22:46
西北野狼
摘要:概念 在C语言中,函数指针是一种特殊的指针类型,它指向的是函数而不是普通的数据变量。函数在内存中有其入口地址,函数指针就是用来存储这个地址的变量。 函数指针的定义 函数指针的定义形式如下: 返回值类型 (*指针变量名)(参数类型列表); 例如,定义一个指向返回值为int,参数为int和int的函数的
阅读全文
posted @ 2024-10-02 22:44
西北野狼
摘要:概念 在C语言中,共用体(Union)是一种特殊的数据类型。它可以在不同的时刻存储不同类型的数据,但所有成员共享同一块内存空间。这与结构体不同,结构体的每个成员都有自己独立的内存空间。 定义和声明 定义 共用体的定义形式与结构体相似,使用关键字union。例如:union Data { int nu
阅读全文
posted @ 2024-10-02 11:27
西北野狼
摘要:概念 在C语言中,内存对齐(Memory Alignment)是一种编译器为了提高内存访问效率而采用的一种数据存储策略。它要求数据在内存中的存储地址是某个特定值(通常是数据类型大小或其倍数)的整数倍。 为什么要进行内存对齐 提高内存访问速度 现代计算机的内存系统是以字节为单位进行组织的,而CPU在读
阅读全文
posted @ 2024-10-02 10:47
西北野狼
摘要:概念 在C语言中,typedef是一个关键字,用于为已有的数据类型定义一个新的别名。它本身并不创建新的数据类型,而是给现有的类型赋予一个更方便、更易理解或更符合项目特定需求的名字。 基本用法 基本数据类型别名 例如,为unsigned int定义一个新的别名uint:typedef unsigned
阅读全文
posted @ 2024-10-01 22:56
西北野狼
摘要:结构体的概念 在C语言中,结构体(struct)是一种用户自定义的数据类型,用于将不同类型的数据组合在一起,形成一个逻辑上相关的整体。它类似于一个容器,可以容纳多种不同类型的数据项。 结构体的定义 结构体的定义语法如下:struct 结构体名 { 成员类型1 成员名1; 成员类型2 成员名2; //
阅读全文
posted @ 2024-10-01 22:20
西北野狼
摘要:在C语言中,强制类型转换(强转)可能会导致精度发生变化,具体情况取决于转换的类型。 数值类型转换 浮点数转换为整数 当把浮点数强制转换为整数时,小数部分会被直接截断,精度必然会发生变化。例如:float num = 3.14; int result = (int)num; // 此时result的值
阅读全文
posted @ 2024-10-01 20:54
西北野狼
摘要:强制类型转换 概念 在C语言中,强制类型转换(强转)是一种将一个数据类型的值转换为另一个数据类型的操作。它允许程序员显式地改变表达式的数据类型。 语法 强转的语法形式为:(目标类型)表达式。例如,(int)3.14会将浮点数3.14强制转换为整数类型,结果为3。 作用 不同类型数据运算时的类型统一
阅读全文
posted @ 2024-09-28 10:36
西北野狼
摘要:开机logo device - board - hihope - rk3568 - kernel 替换logo_kernel.bmp和logo.bmp文件 开机动画 4.0以后 foundation - graphic - gtaphic_2D - frameworks - bootanimatio
阅读全文
posted @ 2024-09-05 14:53
西北野狼
摘要:在 C 语言中,#和##是预处理器运算符,具有特定的功能。 一、#运算符(字符串化运算符) 概念: #运算符被称为字符串化运算符。它的作用是将其后面的参数转换为字符串常量。 作用: 在宏定义中,#可以将传入的参数转换为字符串,方便输出调试信息或者构建特定的字符串。 代码例子: #include <s
阅读全文
posted @ 2024-09-01 21:10
西北野狼
摘要:在经典的 C 语言项目中,以下是一些头文件包含的最佳实践: 一、保持头文件自包含性 使用条件编译防止重复包含: 在每个头文件的开头和结尾使用预处理器指令来确保头文件只被包含一次。例如:#ifndef HEADER_NAME_H #define HEADER_NAME_H // 头文件内容 #endi
阅读全文
posted @ 2024-09-01 20:46
西北野狼
摘要:在 C 语言中,头文件的设计可以采用自包含和包含其他文件的方式,以提高代码的可维护性和可重用性。 一、头文件自包含 含义: 头文件自包含是指一个头文件能够独立地进行编译,不依赖于其他头文件的特定包含顺序。这意味着头文件应该包含其自身所依赖的所有定义和声明,以确保无论在什么情况下包含该头文件,都能正确
阅读全文
posted @ 2024-09-01 20:45
西北野狼
摘要:在 C 语言中,条件编译是一种根据特定条件决定是否编译某段代码的机制。它可以提高代码的可移植性、灵活性和效率。 一、条件编译的指令 #ifdef、#ifndef、#endif: #ifdef:如果某个宏已被定义,则编译其后的代码块。 #ifndef:如果某个宏未被定义,则编译其后的代码块。 #end
阅读全文
posted @ 2024-09-01 20:32
西北野狼

浙公网安备 33010602011771号