
C/C++
文章平均质量分 58
C/C++相关知识
海绵宝宝去哪儿了
framework
展开
-
内核中的内联函数及其static修饰
在内核中,对于inline函数的使用时非常常见的,对于体积不是很大并且调用频繁的函数,使用内联函数能够降低函数调用的开销。内核中的内联函数几乎都是与static关键字同时使用。原因:inline函数的定义一般都在.h文件中,且允许多次定义。static保证函数作用域在当前文件。...原创 2021-05-12 21:23:16 · 569 阅读 · 0 评论 -
验证:两个文件同时引用同一.h头文件时,若头文件中仅包含static函数与变量,则在两个文件中的内存区域中独立存在
特性与问题验证static函数的作用域为当前文件,如果仅将static函数/变量定义到头文件中,而该头文件被不同的文件引用这并不会发生multiple define的错误,其原因在于对于两个文件而言,在引用头文件后存在独立的static函数,只是名字一样而已。测试:使用两个文件引用相同头文件(只有static&&不加预编译指令)使用两个文件引用相同头文件(有其他变量&&不加预编译指令)使用两个文件引用相同头文件(有其他变量&&加预编译指令)两种原创 2021-05-12 17:30:17 · 1732 阅读 · 0 评论 -
地址偏移量取整对齐(向上对齐与向下对齐的代码实现)
起因:为甚么有这俩对齐在存储的时候,为了提高效率,一般都会让偏移量落在2的m次方的位置上,而且常有向上取整和向下取整两种需求。方法1. 向下取整:PALIGN_DOWN(x,align) (x & ~(align-1))例如:x = 5,align = 4;即:期望对5向下取整x = 5 == 0101b ; 4 == 0100;结果为:0101 & ~(0011) = 0101 & 1100 = 0100 = 4;即为5按4字节向下取整的结果即将4所在位后面都清原创 2020-08-16 22:42:57 · 3958 阅读 · 0 评论 -
C++知识点回忆:总结
C/C++有数组定义int a1[2][2]={{1,2},{2}};则a1[1][1]的值为不确定的错的:这是一种初始化方法,第二排数据都初始化为2;关于宏定义中的# 和##有#define MYPRINT(x) printf("#x") 则MYPRINT(test)的输出结果为test错的:少了一对双引号;#include <stdio.h>#define XNAME (n) x ## n#define PRINT_XN (n) printf("x" #n " =原创 2020-06-26 23:13:17 · 785 阅读 · 0 评论 -
回忆大端序和小端序
一个地址存储8位数据,也就是1字节对于栈空间数据,地址从上向下增长(从高向低增长)对于堆空间数据,地址从下向上增长(从低地址向高地址)对于大端序和小端序的概念不再赘述大端序:高位数据存在低地址;小端序:高位数据存在高地址;union w{ int a; char b;} c;int checkCPU(){ c.a = 1; return (c.b == 1);}// 返回 1 则为小端序,反之为大端序解释:存储:如果为大端序:高位地址存储0x01如果为小端序:低位地原创 2020-06-25 22:20:50 · 211 阅读 · 0 评论 -
C++中复制(拷贝)构造函数的理解
网上对于复制构造函数的讲解数不胜数,这里就不去仔细罗列其概念了(下面的概念是网上的),直接上代码,我们结合理论分析代码得出拷贝构造函数的使用方法和调用方式:概念简析拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从函数返回这...原创 2020-04-01 15:06:00 · 250 阅读 · 0 评论 -
char * str 与 char str[] 的区别:存储方式的不同决定使用的不同
本文名字是自己重新取的,是根据学习之后的感受重新命名,下面是我学习时看的文章,希望有所帮助。char*str与char str[]的差异。char *str1 和 char str2[]的详解...原创 2020-03-17 14:28:44 · 172 阅读 · 0 评论 -
C语言中的 extern关键字用法
我们知道,程序的编译单位是源程序文件,一个源文件可以包含一个或若干个函数。在函数内定义的变量是局部变量,而在函数之外定义的变量则称为外部变量,外部变量也就是我们所讲的全局变量。它的存储方式为静态存储,其生存周期为整个程序的生存周期。全局变量可以为本文件中的其他函数所共用,它的有效范围为从定义变量的位置开始到本源文件结束。然而,如果全局变量不在文件的开头定义,有效的作用范围将只限于其定义处到文件...转载 2019-12-16 16:04:55 · 184 阅读 · 0 评论 -
printf函数与snprintf函数的用法
已经不止一次看到这个函数了int snprintf(char *str, size_t size, const char *format, ...)看起来和printf函数很像啊= - =有啥关系呢?来对比一下:int printf(const char *format, ...)不用多解释了叭= - = 第一个参数format是我们的打印形式,第二个参数是我们要带入到第一个参数中的变量...原创 2019-12-10 18:44:14 · 496 阅读 · 0 评论 -
C中restrict关键字
关键字restrict只用于限定指针;该关键字用于告知编译器,所有修改该指针所指向内容的操作全部都是基于(base on)该指针的,即不存在其它进行修改操作的途径;这样的后果是帮助编译器进行更好的代码优化,生成更有效率的汇编代码。下面通例子说明:int func (int* x, int* y) { *x = 0; *y = 1; return *x;}上面的函数...原创 2019-11-28 15:39:02 · 276 阅读 · 2 评论