随笔分类 -  C/C++

C/C++
摘要:动态库(在 Linux 系统下通常以 .so 为扩展名,在 Windows 系统下以 .dll 为扩展名)的使用包含创建和在程序里调用这两个主要方面,以下将分别介绍在 Linux 和 Windows 系统中动态库的使用方法。 Linux 系统下动态库的使用 1. 创建动态库 假设有两个源文件 add 阅读全文
posted @ 2025-01-24 16:32 白柒 阅读(27) 评论(0) 推荐(0) 编辑
摘要:以下是一个完整的示例,展示如何创建一个 .a 静态库文件,并在另一个程序中使用它。这个示例包含了创建静态库的源文件、使用静态库的主程序文件,以及相应的编译和链接步骤。 1. 创建静态库所需的源文件和头文件 编写头文件 math_operations.h 这个头文件声明了我们要在静态库中实现的函数。 阅读全文
posted @ 2025-01-24 16:10 白柒 阅读(27) 评论(0) 推荐(0) 编辑
摘要:C语言读写文件 在C语言中,你可以使用标准库中的文件操作函数来向文件中写入字符文本。以下是一些常用的函数和步骤: 打开文件:使用 fopen 函数打开一个文件,如果文件不存在,则创建它。 写入文件:使用 fprintf、fputs 或 fwrite 等函数将数据写入文件。 关闭文件:使用 fclos 阅读全文
posted @ 2025-01-24 15:18 白柒 阅读(86) 评论(0) 推荐(0) 编辑
摘要:当然,这里有一个使用 extern 关键字的简单例子,它涉及一个全局变量和函数。 假设我们有两个源文件:main.c 和 math_functions.c,以及一个头文件 math_functions.h。 math_functions.h(头文件): #ifndef MATH_FUNCTIONS_ 阅读全文
posted @ 2024-11-20 17:09 白柒 阅读(12) 评论(0) 推荐(0) 编辑
摘要:#include <stdio.h> #include <math.h> /* *从技术角度讲,可以把宏的替换体看做是记号(token)型字符串,而不是字符型字符串。 *C预处理器记号是宏定义的替换体中单独的“词”。用空白把这些词分开 *如: *define FOUR 2*2 *该宏定义有一个记号: 阅读全文
posted @ 2024-09-03 14:35 白柒 阅读(11) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> // 注意:如果想取消使用assert,NDEBUG必须在include <cassert>前 // 或者在编译时候加,g++ assert用法.cc -DNDEBUG // #define NDEBUG #include <cassert> using na 阅读全文
posted @ 2024-01-24 21:52 白柒 阅读(4) 评论(0) 推荐(0) 编辑
摘要:在程序设计中,数据输入/输出(I/O)操作是必不可少的,C++语言的数据输入/输出操作是通过I/O流库来实现的。C++中把数据之间的传输操作称为流,流既可以表示数据从内存传送到某个载体或设备中,即输出流,也可以表示数据从某个载体或设备传送到内存缓冲区变量中,即输入流。 C++流涉及以下概念: 标准I 阅读全文
posted @ 2024-01-24 21:50 白柒 阅读(22) 评论(0) 推荐(0) 编辑
摘要:继承顺序 派生类可以访问基类中所有的非私有成员。因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。 我们可以根据访问权限总结出不同的访问类型,如下所示: 访问 public protected private 同一个类 yes yes yes 派生类 yes yes n 阅读全文
posted @ 2024-01-17 22:17 白柒 阅读(23) 评论(0) 推荐(0) 编辑
摘要:什么是库 库是写好的现有的,成熟的,可以复用的代码。现实中每个程序都要依赖很多基础的底层库, 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。库有两种:静态库(.a、.lib)和动态库(.so、.dll)。 windows上对应的是.lib .dll linux上对应的是.a 阅读全文
posted @ 2024-01-14 19:26 白柒 阅读(40) 评论(0) 推荐(0) 编辑
摘要:类型转换可以分为两种情况:隐式类型转化;显示类型转化。 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与 接收返回值类型不一致时,就需要发生类型转化,C语言中总共有两种形式的类型转换:隐式类型 转换和显式类型转换。 隐式类型转化:编译器在编译阶段自动进行,能转就 阅读全文
posted @ 2024-01-11 22:33 白柒 阅读(10) 评论(0) 推荐(0) 编辑
摘要:友元函数 友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。友元函数是一个不属于类成员的函数,但它可以访问该类的私有成员。换句话说,友元函 阅读全文
posted @ 2024-01-11 22:29 白柒 阅读(17) 评论(0) 推荐(0) 编辑
摘要:static 1.static 局部变量 将一个变量声明为函数的局部变量,那么这个局部变量在函数执行完成之后不会被释放,而是继续保留在内存中 2.static 全局变量 表示一个变量在当前文件的全局内可访问 3.static 函数 表示一个函数只能在当前文件中被访问 4.static 类成员变量 表 阅读全文
posted @ 2024-01-08 21:30 白柒 阅读(24) 评论(0) 推荐(0) 编辑
摘要:构造函数是特殊的成员函数,虽然它的名字叫构造函数,但是它的主要任务不是开空间创建对象,而是初始化对象。 特性: 1、函数名和类名相同。 如:类名Stack,那么构造函数的函数,名也为Stack 2、无返回值(也不需要void)。 3、对象实例化编译器自动调用对应的构造函数。对象在定义之后就会调用它的 阅读全文
posted @ 2024-01-08 21:14 白柒 阅读(12) 评论(0) 推荐(0) 编辑
摘要:在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。 inline不是强制的,编译器可以对它置之不理。例如,递归函数通常不会被编译为inline函数,编译器有权决定是否将声明为inline的函数编译为inlin 栈空间就 阅读全文
posted @ 2024-01-02 20:49 白柒 阅读(13) 评论(0) 推荐(0) 编辑
摘要:#include <iostream> using namespace std; int main(){ // const 指针 int num = 1; int another = 2; // 这个指针指向的内容,不能透过这个指针来修改 // 可以理解为const int*, const int 阅读全文
posted @ 2023-12-29 22:05 白柒 阅读(6) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示