c
无名小卒~
一名程序员
展开
-
让你可以装逼的算法技巧总结
参考转载至:https://blog.csdn.net/m0_37907797/article/details/84960402今天和大家讲讲,在做算法题时常用的一些技巧。对于平时没用过这些技巧的人,或许你可以考虑试着去看看在实践中能否用的上这些技巧来优化问题的解。巧用数组下标数组的下标是一个隐含的很有用的数组,特别是在统计一些数字,或者判断一些整型数是否出现过的时候。例如,给你一串字母,让...原创 2020-03-03 16:35:08 · 210 阅读 · 0 评论 -
gcc/g++使用自定义的同名函数覆盖C库函数
前言其实这问题以前就想过,每次都没有深究到底。原因在于无论是哪本Linux C编程的书,基本都会使用可靠语义的signal函数来覆盖相应的库函数。比如在《Unix网络编程》中是如下定义的:对被SIGALRM以外的信号中断的系统调用自动重启,并且不阻塞其他的信号。(虽然信号掩码是空,但是POSIX保证被捕获的信号在其信号处理函数运行期间总是阻塞的)但是书中并未提及具体怎么覆盖库函数的定义, 毕竟...转载 2020-03-03 16:34:31 · 1111 阅读 · 0 评论 -
内联函数-C中关键字inline用法解析
一、什么是内联函数 在C语言中,如果一些函数被频繁调用,不断地有函数入栈,即函数栈,会造成栈空间或栈内存的大量消耗。 为了解决这个问题,特别的引入了inline修饰符,表示为内联函数。 栈空间就是指放置程式的局部数据也就是函数内数据的内存空间,在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足所造成的程式出错的问题,函数的死循环递归调用...原创 2020-03-03 16:33:34 · 174 阅读 · 0 评论 -
可变参数的宏定义
printf()和fprintf()这些输出函数的参数是可变的,在调试程序时,你可能希望定义自己的参数可变的输出函数,那么可变参数宏会是一个选择。如何定义C99中规定宏可以像函数一样带有可变参数,比如#define LOG(format, ...) fprintf(stdout, format, __VA_ARGS__)其中,…表示参数可变,__VA_ARGS__在预处理中为实际的参数...原创 2020-03-03 16:32:54 · 621 阅读 · 0 评论 -
函数不定参数实现方式
函数如何实现不定参数:由于在C语言中没有函数重载,解决不定数目函数参数问题变得比较麻烦,即使采用C++,如果参数个数不能确定,也很难采用函数重载。对这种情况,提出了指针参数来解决问题。所用函数和结构体1. va_list定义了一个指针arg_ptr, 用于指示可选的参数.2. va_start(arg_ptr, argN)使参数列表指针arg_ptr指向函数参数列表中的第一个可选参数,a...原创 2020-03-03 16:32:14 · 385 阅读 · 0 评论 -
c语言-计算结构体成员偏移量
转载至:http://www.runoob.com/cprogramming/c-macro-offsetof.htmlhttps://blog.csdn.net/encourage2011/article/details/52463857一、C 库宏 - offsetof()描述C 库宏 offsetof(type, member-designator) 会生成一个类型为 size_t...原创 2020-03-03 16:31:36 · 4194 阅读 · 1 评论 -
内存字节对齐
写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. 如果体系结构是不对齐的,A中的成员将会一个挨一个存储,从而sizeof(a)为11。显然对齐更浪费了空间。那么为什么要使用对齐呢? 体系结构的对齐和不对齐,是在时间和空间上的一个权衡。对齐节省了时间。假设一个体系结构的字长为w,那么它同...原创 2020-03-03 16:30:51 · 113 阅读 · 0 评论 -
volatile用法
volatile 易变、易失的一个定义为volatile的变量是说这变量可能会被意想不到地改变。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。常用于:并行设备的硬件寄存器(如:状态寄存器)、硬件、中断、RTOS。一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)多线程应用中被几个任务共享...原创 2020-03-03 16:30:07 · 115 阅读 · 0 评论 -
float和double在内存存储解析
C语言中,对于浮点类型的数据采用单精度类型(float)和双精度类型(double)来存储。float数据占用32bit,double数据占用64bit。我们在声明一个变量float f= 2.25f的时候,是如何分配内存的呢?如果胡乱分配,那世界岂不是乱套了么,其实不论是float还是double在存储方式上都是遵从IEEE的规范的,float遵从的是IEEE R32.24 ,而double...原创 2020-03-03 16:29:23 · 547 阅读 · 2 评论 -
c语言中weak的作用
转载至:https://blog.csdn.net/q2519008/article/details/82774774在u-boot源码中看到__weak关键字,在移植过程中遇到了问题。用例weak在不同的环境中用法不同,在stm32源码中也比较常见,在u-boot和linux中用法都不一样。u-boot中的weak关键字:__weak用例:int __weak fpga_load...原创 2020-03-03 16:27:49 · 9957 阅读 · 0 评论