上一篇讲解了printf的一些高级用法,不知道大家有没有学到东西,相应的,这篇该为大家介绍对应的输入函数scanf的一些功能了!
scanf作为C语言标准函数库中的格式化输入函数,大家对它常规的使用应该都很明白,
接收控制的格式除了常用的%d,%c,%f等以外, 我们今天重点讲解*在scanf中的用法和scanf的返……继续阅读 »
CTO
8年前 (2017-02-16) 52651浏览 11评论
238个赞
三个单字符接受函数,今天给为大家详细区分!
第一个,getchar函数,是C语言标准库中的函数,在头文件stdio中,可以接受用户输入的一个字符,回车结束,明文显示。声明和示例如下:
注意:第一行是我输入的,第二行是printf输出的!
第二个,getch函数,也是接收键盘……继续阅读 »
CTO
8年前 (2017-02-07) 35420浏览 2评论
217个赞
今天这篇,想给大家把printf拿出来再详细讲一讲,因为不少同学反映只会用,但一些参数、返回值什么的还不了解,所以今天总结一二,给大家总结和梳理一下,算是抛砖引玉,能给大家打开大门,下面开始。
首先,以下四种printf的用法想必大家都应该很熟悉。
除此以外,各种\n、\t 、\r、\b等转义字符不再讲解,大家可自行查表。
我们……继续阅读 »
CTO
8年前 (2017-02-04) 55184浏览 18评论
469个赞
通过上一篇的讲解,相信大家已经明白直接的return数组的问题以及原因了,今天我们将详细为大家讲解在函数中返回数组的常见办法。
此类问题,应用场景往往为了解决函数间相互通信,比如某个函数内处理的完的结果数据需要交接给另一个函数的情况,那么一般来说,总结有以下三种:
直接使用全局变量:这种方法最方便,但此方法打破了函数间的通信及封装的思想,所以……继续阅读 »
CTO
8年前 (2017-01-31) 29039浏览 3评论
106个赞
最近看到一些同学问题,有提到说:如何在一个函数中返回数组呢?
能否直接在自定义 函数中,写成char *类型返回值,直接返回呢?,代码如下:
直接返回str数组名(注意不需要加&,还有好多同学犯这个错)
但事实上,运行结果并非正常,我们尝试在调用函数中输出,可以看到结果并非是原来内容(当然你的电脑输出可能还……继续阅读 »
CTO
8年前 (2017-01-28) 43505浏览 9评论
180个赞
有同学写过或者想写这样的宏定义吗?
求两个或几个数的乘积: #define SQU(x) x*x
我们正常使用没有问题:
但如果这样写呢?
哎呀,竟然不是100了,难道SQU(10)和SQU(5+5)不等价吗?5+5不是10吗?
的确,这里SQU(10)和SQU(5+5)的确不等价……继续阅读 »
CTO
8年前 (2017-01-22) 21006浏览 3评论
124个赞
大家在学习C语言过程中,可能会见到过一些这样的题,就是表达式短路,表达式短路主要体现在C语言中逻辑运算符&&和||。今天将对表达式短路的做逆向分析,来深入理解它。
首先利用表达式短路,我们可以写一个很经典的累加求和的函数,代码如下:
功能很简单,就是求1+2+…+99+100的数字和的一个程序,但用递归写了出来,……继续阅读 »
CTO
8年前 (2017-01-12) 11483浏览 1评论
28个赞
今天我们来逆向分析C语言中++和—运算符前缀和后缀的区别,提到这里,相信有不少同学也早有过疑问,如前缀++表示”先加再用”,后缀++表示”先用再加”,今天经过我们的逆向分析,相信大家就会更加理解这其中的意义!
我们这里以++为例,分别进行逆向分析实验,观察汇编代码,先看一个简单的程序:
……继续阅读 »
CTO
8年前 (2017-01-06) 17173浏览 0评论
31个赞
这里首先说明一点:char *p和a[] 不是一回事,详情将后续更新。
那么两者最大的区别是什么呢?答:一个存了,一个没存!
为啥?先说第一个,第一个其实就是一个字符数组的定义连同初始化的过程,只不过长度缺省,这种情况编译器是允许的,其长度为后面初始化字符串的长度+1(因为‘\0’)。这个相信大家学过C语言看过教材的都应该知道。我们可以试图打印……继续阅读 »
CTO
8年前 (2017-01-04) 9618浏览 0评论
19个赞
char *p1,p2为啥不对?
相信不少同学在学完指针后尝试定义两个指针会这样写,并且编译没有错误,使用P1也没有问题,但尝试使用P2的时候可能会发现不对劲!
为什么呢,p2可能仅仅是个char类型的变量,并非是一个指针!
为何是这样,相信不少这么定义并且觉得正确的同学会有这样的理解,那就是:char *属于类型,……继续阅读 »
CTO
8年前 (2017-01-02) 8805浏览 0评论
50个赞