
C/C++
文章平均质量分 77
c语言
埋头干饭ing
这个作者很懒,什么都没留下…
展开
-
exec函数
/系统环境变量 int execl(const char * path , const char * arg , . . . /* (char *) NULL */);(1)execl和execv这两个函数是最基本的exec,都可以用来执行一个程序,区别是传参的格式不同。execl是把参数列表(本质上是多个字符串,必须以NULL结尾)依次排列而成(l其实就是list的缩写),execv是把参数列表事先放入一个字符串数组中,再把这个字符串数组传给execv函数。原创 2022-10-27 15:57:33 · 818 阅读 · 0 评论 -
c++面试题集锦
c++面试题原创 2022-07-17 14:27:27 · 23086 阅读 · 41 评论 -
C++ 引用
c++ 引用原创 2022-07-11 23:49:17 · 275 阅读 · 0 评论 -
c++构造函数和析构函数
构造和析构原创 2022-07-26 22:44:44 · 518 阅读 · 0 评论 -
C语言位域
struct 位域结构名位域列表元素描述type只能为 int(整型),unsigned int(无符号整型),signed int(有符号整型) 三种类型,决定了如何解释位域的值。位域的名称。width位域中位的数量。宽度必须小于或等于指定类型的位宽度。带有预定义宽度的变量被称为位域。上面的结构定义指示 C 编译器,age 变量将只使用 3 位来存储这个值,如果您试图使用超过 3 位,则无法完成。int a : 8;int b : 2;原创 2023-02-01 22:09:29 · 270 阅读 · 0 评论 -
C头文件相互包含
若hello.c文件中用到其他文件中的内容,比如yebo.h,则hello.h文件把用到的头文件yebo.h包含进来就可以了。正确的做法是:应该秉承.c文件对应的.h文件只包含头文件里用到的其它文件的头文件,任何非必须的.h文件不要包含;此时应该将其中一个头文件拆成两个头文件b1.h、b2.h,b1.h让原来的a.h包含;修改a.h、b.h两个文件,main.c文件内容不变。假若头文件a包含了头文件b、头文件b又包含了头文件a,那么在#include头文件a的时候,就可能会导致递归包含,从而导致编译出错;原创 2023-02-01 22:07:22 · 3143 阅读 · 1 评论 -
C函数指针与回调函数
实例中 populate_array() 函数定义了三个参数,其中第三个参数是函数的指针,通过该函数来设置数组的值。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。简单讲:回调函数是由别人的函数执行时调用你实现的函数。size_t 在stddef.h头文件中定义。原创 2023-02-01 22:07:05 · 344 阅读 · 0 评论 -
sizeof和strlen的区别及使用详解
为了CPU存取的速度最快(这同CPU取数操作有关,详细的介绍可以参考一些计算机原理方面的书),C语言在处理数据时经常把结构变量中的成员的大小按照4或8的倍数计算,这就叫数据对齐(data alignment)。当然这样的设置会在读写一些别的应用程序生成的数据文件或交换数据时带来不便,如有不理解的可以看看另外关于一篇内存对齐的博客。最后的sizeof计算的是指针(sizeof(char *)) 的大小,为8。,这是计算的结果不再是类型所占内存的大小,数组名就退化为指针了。了是类型所占空间的字节数,原创 2022-10-28 17:10:59 · 284 阅读 · 0 评论 -
exit()函数介绍
函数名: exit()所在头文件:stdlib.h功能: 关闭所有文件,终止正在执行的进程。用法格式:void exit(int status)exit() 是电脑函数exit() 通常是用在子程序中用来终结程序用的,使用后程序自动结束,跳回操作系统。exit(0) 表示程序正常退出exit⑴/exit(-1)表示程序异常退出。exit() 结束当前进程/当前程序/,在整个程序中,只要调用 exit ,就结束。原创 2022-10-28 17:10:29 · 2616 阅读 · 0 评论 -
巧用可变参数宏、编译器内置宏和printf输出调试信息
我们在写程序的时候,总是或多或少会加入一些printf之类的语句用于输出调试信息,但是printf语句有个很不方便的地方就是当我们需要发布程序的时候要一条一条的把这些语句删除,而一旦需要再次调试的时候,这些语句又不得不一条条的加上,这给我们带来了很大的不便,浪费了我们很多的时间,也造成了调试的效率低下。所以,很多人会选择使用宏定义的方式来输出调试语句。原创 2022-10-27 15:37:35 · 416 阅读 · 0 评论 -
select函数详解
使用select函数可以完成非阻塞方式工作的程序,它能够监视我们需要监视的文件描述符的变化情况—— 读写或是异常 。非阻塞方式:non-block,就是进程或线程执行此函数时不必非要等待事件的发生,一旦执行肯定返回,以返回值的不同来反映函数的执行情况,如果事件发生则与阻塞方式相同,若事件没有发生,则返回一个代码来告知事件未发生,而进程或线程继续执行,所以效率较高。select函数调用过程:由上图知,调用select函数需要一些准备工作,调用后还需要查看结果。select可以同时监视多个文件描述符(套接原创 2022-10-27 15:36:56 · 17524 阅读 · 3 评论 -
C语言time()函数的用法
此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数(即格林尼治时间1970年1月1日00:00:00到当前时刻的时长,时长单位是秒)。:localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法,然后将结果由结构tm返回。将变量t2的地址作为实参传递给time()函数,函数自动把结果传递给t2,不需要额外的赋值语句。:成功则返回秒数,失败则返回((time_t)-1)值,错误原因存于error中。原创 2022-10-27 15:35:27 · 29099 阅读 · 2 评论 -
C语言:将数字转化为字符串
【代码】C语言:将数字转化为字符串。原创 2022-10-27 15:34:55 · 2698 阅读 · 0 评论 -
c和cpp实现CPU核上绑定固定线程
刚开始接触cpu_set_t时,对_S系列接口有疑问,不明白它存在的意义,明明自己malloc一个cpu_set_t就可以,然后使用各种非_S对其操作,为什么非要有_S系列接口呢?这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。就是进程要在某个给定的CPU上尽量长时间的运行而不被迁移到其他处理器的倾向性。将当前的pid绑定到4,5,6,7核上(大核核超大核)cpu_set_t用来描述CPU的集合,被。设置线程亲和性,将线程绑定到指定CPU核。cpuset:CPU核的集合。原创 2022-10-27 15:34:00 · 2553 阅读 · 0 评论 -
队列之单向队列
队列,是一种数据结构。顾名思义,就是像排队一样。日常生活中,排队是常见的事情,买票要排队、打饭要排队、坐车要排队……这么细数,貌似任何事都要排队。队列,是特殊的线性表。因为单链表、双链表,以及顺序线性表,都是没有限制操作位置的,而队列却有这个限制。规定队列只能从一端插入,另一端删除。插入的一端称为队尾,删除的一端称为队头。也就是说,先进队的数据,先出队,后进的数据后出,即所谓的FIFO。这就是它的特殊之处。原创 2022-09-29 16:11:27 · 902 阅读 · 1 评论