
c/c++
文章平均质量分 79
讲解与分析C和C++的知识理解与分析
kklovecode
都说寒冬将至,但火苗仍在我手中
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
指针和指针变量有何不同,为何混而一谈(根本是左值右值的区别)
先看如下一段简单代码代码第二排x = 100是将100存进了x 的空间;y = x是将x的值存进了y两者都是x,一个使用了空间,一个使用了值所以我们能够得出x = 100;用的是x 的空间,变量的属性,int y = x;用的是x 的值,数据的属性,左值右值通过一个简单的整型变量,接下来我们来说一说指针变量首先一来先定义了两个变量p和q,首先p =&a ,a的地址赋给了p,其实内在含义是使用了p的空间,用的是,即,而之后q = p,是将变量p的值(也就是a的地址)赋给了q,用的是变量p的。原创 2023-07-06 16:25:31 · 158 阅读 · 6 评论 -
[C语言]关键字解析(二) typedef和#define以及区别
并没有产生新的数据类型。说直白点typedef就是。原创 2023-08-26 13:42:46 · 771 阅读 · 26 评论 -
[C语言]关键字解析(一) auto, register, extern和static关键字
C语言一共多少个关键字呢?一般网上会说是32个,但是这个都是 C90(C89) 的标准。其实 C99 后又新增了5个关键字。不过,目前主流的编译器,对 C99 支持的并不好,我们后面默认情况使用 C90 ,即认为32个.这篇文章中我们不会讲解int,char,if,while等十分简单常见的关键字,而是讲解一些其他略微复杂的关键字。原创 2023-08-16 15:50:17 · 414 阅读 · 16 评论 -
C语言中的%2d,%02d,%-2d的含义,以及解决99乘法表打印不对齐问题
同理: %md:m为指定的输出字段的宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。:无论什么表示方法,我们定义的整数的位数大于我们想输出的数字的位数,输出时仍然是自己定义的数字。通过以上的例子我们可以解决一个大家在刚学习编程时就能遇到的一个问题,那就是。很多同学刚上来打印会出现的问题是,打印出的数据并没有对齐。不一样的是,当我们输出的数字位数不够时,3.%-2d,结果十进制,长度为2,,不够补空格,多了以实际长度输出。1.%2d,代表长度为2,,多了以实际长度输出,如。原创 2023-06-14 21:56:56 · 27792 阅读 · 19 评论 -
数组名与地址,函数名与地址有啥关系 个人总结
比如在C语言中,一个函数占用一段连续的内存区,我们编写的程序,最终是不存在所谓的函数名的,有的只有内存单元地址如0xffeedd00.我们的程序执行时,程序加载到内存,比方说整个程序所占用的内存范围是0xffee0000 ~ 0xffeedd00。为一个指针,这里的退化就是上面提到的隐式转化。而sizeof和&这两种特殊情况让数组名成为了数组本身,其原因就是其背后并没有这种隐式转换,并且数组名作为函数形参时,在函数体内,其失去了本身的内涵,仅仅只是一个指针,在失去其内涵的同时,它还失去了其常量特性,原创 2023-07-06 22:16:02 · 511 阅读 · 11 评论 -
轻松从内存角度深度理解++i与i++的本质区别(一看就懂)
这篇文章我将主要介绍++i和i++不同的一些底层逻辑不同,相信大家在网上也看到了不少资料都说明:++i是先自增+1,再使用(即再进行表达式运算);:最后想跟大家说的是,看到这些汇编代码,或许心中会与这样的疑问,为什么每次都要借助类似eax寄存器?由上述分析,我们就能很快的理解到为什么++i和i++会有+1的时间上的区别了。第三步mov指令:eax寄存器的值返回给a,此时已经是+1之后的值了。第二步:add指令:给eax的值+1(这一步也是与上面区分的关键)第一步mov指令:将变量a的值赋值给eax寄存器。原创 2023-07-21 00:55:11 · 1687 阅读 · 0 评论 -
递归以及斐波那契数列递归算法和迭代算法的实现与分析
综上,我们也可以通过斐波那契的例子看出递归算法的在效率上一般不是很高,而迭代在效率上要高于递归.但是递归相对而言代码要比迭代简单一点,代码的可读性较强递归运用较多的场景在于:1.当问题和子问题具有递推关系(阶乘)。1.具有递归性质的数据结构(链表、树)。因此递归函数也只是一种解决问题的技巧,它和其它技巧一样,也存在某些缺陷,具体来说就是:递归函数的时间开销和内存开销都非常大,甚至在极端情况下会导致程序崩溃(所以递归函数一定递了之后要归,不然最终会造成栈溢出。原创 2023-08-13 16:45:50 · 937 阅读 · 25 评论 -
带你理解输入输出缓存区(超详解)
getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,_getch就立刻结束输入了,换言之,不需要将输入的字符保存在缓存区,也就是说,输入一个字符,它马上读取。这是因为_getch相当于无缓存的getchar(或者单个读取的sancf函数),程序运行到_getch函数将进入阻塞状态,并等待键盘直接输入一个字符,按下一个键后(不需要回车送入输入缓存区),getch函数就立刻能收到对应的字符(但是不会显示在控制台上),随后通过putchar打印在控制台。同理,计算机的缓存区也是运用了同样的思想。原创 2023-06-30 00:39:30 · 6297 阅读 · 16 评论