C静态库的创建与使用详解
C源程序需要经过预处理、编译、汇编几个阶段,得到各自源文件对应的可重定位目标文件,可重定位目标文件就是各个源文件的二进制机器代码,一般是.o格式。比如:util1.c、util2.c及main.c三个C源文件,经过预处理器、编译器、汇编器的处理,就可以得到各自的目标文件util1.o,util2.o以及main.o。可重定位目标文件中的地址是从0开始的,需要链接器将若干个可重定位目标文件通过符号解
C/C++编程 2023年12月31日 71
C源程序需要经过预处理、编译、汇编几个阶段,得到各自源文件对应的可重定位目标文件,可重定位目标文件就是各个源文件的二进制机器代码,一般是.o格式。比如:util1.c、util2.c及main.c三个C源文件,经过预处理器、编译器、汇编器的处理,就可以得到各自的目标文件util1.o,util2.o以及main.o。可重定位目标文件中的地址是从0开始的,需要链接器将若干个可重定位目标文件通过符号解
C/C++编程 2023年12月31日 71
定制删除器 我们在上一篇文章中讲到了智能指针,相信大家都会有一个问题,智能指针该如何辨别我们的资源是用new int开辟的还是new int[]开辟的呢,要知道[]必须与delete[]匹配否则会有未知错误的,这个问题我们就交给定制删除器来解决: int main() { shared_ptr<int> sp1(new int[10]); shared_ptr<st
C/C++编程 2023年12月31日 52
今天小编给大家分享一下C语言怎么用sprintf固定字符串输出位数的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。 一、前言 sprintf 函数是一个 C 语言中的函数,也被许多其他编程语言所支持。它允许你根据一组变量来格式化和存储一个字符字符串。sprintf 函数可以用于将格式
C/C++编程 2023年12月31日 48
通常情况下我们在编写套接字通信程序时都会实现一收一发的通信模式,当客户端发送数据到服务端后,我们希望服务端处理请求后同样返回给我们一个状态值,并以此判断我们的请求是否被执行成功了,另外增加收发同步有助于避免数据包粘包问题的产生,在多数开发场景中我们都会实现该功能。 Socket粘包是指在使用TCP协议传输数据时,发送方连续向接收方发送多个数据包时,接收方可能会将它们合并成一个或多个大的数据包,而不
C/C++编程 2023年12月30日 36
一、算法整体思路 第1步 按照最直接、最好理解的方式看,2的n次幂是n个2相乘,即有如下公式 例如: 第2步 然而为了节省大量时间,通过简单的思考和严格数学推理,我们不难理解以下结论: 1.偶数幂的情况: 通过幂函数运算法则,有2n=(2n/2)2,即有如下等式: 例如24 的计算过程如下所示: 得到上面的表达式后,22是不是可以继续按照这个思想分解下去
C/C++编程 2023年12月30日 41
一、扫雷游戏分析 关键步骤:两个二维数组的大小为11*11,但实际上操作的只有中心的9*9的棋盘,创建另外两行的原因是方便统计一个坐标周围3*3的雷的个数1.创建两个二维数组一个存放布置好的雷(1号),另外一个存放空的棋盘(2号)2.选手选出来的坐标传到1号棋盘上对坐标进行分析如果是雷就返回被炸死了,不是雷就算一下这个坐标周边一圈有多少雷,并在2号棋盘上显示出来结束标志:没被炸死,且棋盘上还剩下雷
C/C++编程 2023年12月29日 39
C/C++编程 2023年12月28日 41
这篇文章主要介绍了怎么使用C语言实现一个基于数组的队列的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用C语言实现一个基于数组的队列文章都会有所收获,下面我们一起来看看吧。 定义一个队列结构体 我们可以通过定义一个队列结构体来实现队列的操作。这个队列结构体中包括队列的大小、头尾指针、元素数据等信息。 #define MAX_SIZE
C/C++编程 2023年12月27日 39
模板智能数组指针 1.管理任意类型的数组指针 2.释放的时候自动删除数组指针指向的内存 //模板智能数组指针 template<typename T> class AiArrayPtr { public: AiArrayPtr(T *pArray) { m_pAiPtr = pArray; m_bIsMyPtr =true;//是自己
C/C++编程 2023年12月24日 65
C++中的std::initializer_list initializer_list是C++11提供的一种新类型,其定义于头文件<initializer_list>中,此头文件是工具库的一部分, <initializer_list>定义如下: namespace std { template<class E> class initializer_l
C/C++编程 2023年12月23日 37