![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c语言
文章平均质量分 76
笑看江湖路6
这个作者很懒,什么都没留下…
展开
-
c语言中printf 函数不定长参数的实现
, 可变参数的函数必须有一个参数表示参数的个数, 才能让编译器知道压栈多少参数, 以及函数返回时弹出多少个参数, 我们在fmt字符串中提取’%‘的个数, 以及针对’%'后面不同的字符来处理。第一个参数ap, 就是刚刚提到的va_list类型, 第二个参数A, 就是一个确定的类型, 也就是"…va_start(ap, A)宏将ap初始化,以便随后被va_arg()和va_end()使用,必须先调用。va_arg()宏在va_start()宏之后的第一次使用会返回最后的参数. 连续的调用会返回其余参数的值.原创 2023-01-08 11:30:59 · 778 阅读 · 0 评论 -
函数指针的强制转换
函数指针的声明形式:void (*pFunction)(),当然,没有参数的情况下也可写成void (*pFunction)(void)的形式。那么pFunction函数指针的原型就是void (*)(void),即把变量名去掉,因此,对于一个给定的entry地址,要把它转换成为函数指针,就是(void (*) (void))entry对于函数指针的调用,ANSI C认为 pFunction()和...原创 2018-03-25 11:00:38 · 6611 阅读 · 2 评论 -
【递归算法】人脑理解递归
递归真是个奇妙的思维方式。自打我大二学习递归以来,对一些简单的递归问题,我总是惊叹于递归描述问题和编写代码的简洁。但是总感觉没能融会贯通地理解递归,有时尝试用大脑去深入“递归”,层次较深时便常产生进不去,出不来的感觉。这种状态也导致我很难灵活地运用递归解决问题。有一天,我看到一句英文:“To Iter...转载 2018-07-02 09:12:31 · 191 阅读 · 0 评论 -
volatile的理解
volatile译为:易变的。这不是和题目的让我保持原样矛盾了吗?其实不然,在变量前加上该关键字修饰,确实是告诉编译器,这个变量可能会被意想不到地改变,不要对它进行优化,这样,编译器就不会去假设这个变量的值了。每次都要到变量的地址中去读取变量的数据,但正因为这样,才是保持了变量的原样,因为变量已经发生改变了,你却操作的是没有变化时的数据,这样才让变量失去了本应该保持的属性。精确地说就是,优化器在用...原创 2018-07-02 09:13:43 · 184 阅读 · 0 评论 -
c语言哈希表
1.哈希表的定义 这里先说一下哈希表的定义:哈希表是一种根据关键码去寻找值的数据映射结构,该结构通过把关键码映射的位置去寻找存放值的地方,说起来可能感觉有点复杂,我想我举个例子你就会明白了,最典型的的例子就是字典,大家估计小学的时候也用过不少新华字典吧,如果我想要获取“按”字详细信息,我肯定会去根据拼音an去查找 拼音索引(当然也可以是偏旁索引),我们首先去查an在字典的位置,查了一下得到“...原创 2018-07-02 09:51:51 · 31067 阅读 · 7 评论 -
字符串切割函数strtok、strtok_s、strtok_r的区别
strtok函数头文件:#include <string.h> 函数原型:char * strtok (char *str, const char * delimiters); 参数:str:待分割的字符串(c-string);delimiters:分割符字符串。 该函数用来将...转载 2018-07-12 21:37:52 · 962 阅读 · 0 评论 -
malloc、calloc、realloc的区别
(1)C语言跟内存分配方式<1>从静态存储区域分配. 内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.&l...转载 2018-07-13 10:29:30 · 151 阅读 · 0 评论 -
cin、cin.get()、getline()(讲解的很详细)
黄刚的博客:cin、cin.get()、getline()(讲解的很详细)in<<, cin.get,cin.getline等函数深入分析很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,c...转载 2018-08-21 16:00:12 · 2462 阅读 · 0 评论