随笔分类 -  c

摘要:这是yjy的习题库,中途我在使用fgest时颇费了一点心思,特此记录一下。 阅读全文
posted @ 2019-08-20 20:51 Crystal_Guang 阅读(421) 评论(0) 推荐(0) 编辑
摘要:今天在使用中移动的模组的时候,发现: 突然把我难住了,ctrl+z要在我的数据包中通过TCP/IP发送,而结束字符肯定是需要我自己加在数据包的末尾的。 故,做如下测试: 我的输入是ctrl+z(小z),ctrl+Z(大写z),ctrl+A,+B,+C,+D,+E,+F. 得出结论是,ctrl+字母a 阅读全文
posted @ 2017-12-19 21:23 Crystal_Guang 阅读(1504) 评论(0) 推荐(0) 编辑
摘要:我们知道goto语句是不能跳过函数的,但是在我么C语言的应用中,在不使用汇编的情况下,遇到需要跳出深层循环比如检错机制的时候,有确实想要跨函数跳转,有没有上面办法可以做到呢? 这就是今天要讲的两个库函数,setjmp和longjmp. 先看例子: 通过上面的测试代码和输出数据,我们可以看到longj 阅读全文
posted @ 2017-10-08 14:25 Crystal_Guang 阅读(328) 评论(0) 推荐(0) 编辑
摘要:goto语句是一种无条件转移语句,goto 语句的使用格式为: goto 语句标号;其中标号是一个有效的标识符,这个标识符加上一个“:”(冒号)一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。通常go 阅读全文
posted @ 2017-09-16 11:44 Crystal_Guang 阅读(8699) 评论(0) 推荐(0) 编辑
摘要:这个函数真的很强大,这篇随笔也将一直更新一些总结,直到涵盖大多数应用: eg1: 今天公司项目中从云端获取了一段字符串 "+CBC: 0,90,4090" 我想获取其中的数字0,90,4090.我们当然可以写一个函数,判断,并且逐一取值,然后再糅合成想要的数据,但是这样也真的太麻烦了,于是sscan 阅读全文
posted @ 2017-08-22 23:24 Crystal_Guang 阅读(1813) 评论(0) 推荐(0) 编辑
摘要:我们知道结构体内存对齐字节可以通过#pragma pack(n) 的方式来指定。 但是,有没有想过一个问题,某些时候我想4字节对齐,有些时候我又想1字节或者8字节对齐,那么怎么解决这个问题呢? 此时,#pragma pack(push) 和#pragma pack(pop) 以及#pragma pa 阅读全文
posted @ 2017-08-19 00:28 Crystal_Guang 阅读(35207) 评论(0) 推荐(10) 编辑
摘要:逗号操作符,是优先级最低的一个。 eg1: eg2: c语言提供一种特殊的运算符,逗号运算符,优先级别最低,它将两式联接起来,如:(3+5,6+8)称为逗号表达式,其求解过程先表达式1,后表达式2,整个表达式值是表达式2的值,如:(3+5,6+8)的值是14。(a=3*5,a*4)的值是60。表达式 阅读全文
posted @ 2017-08-06 13:08 Crystal_Guang 阅读(3671) 评论(0) 推荐(0) 编辑
摘要:有一个函数,是我们从学习c语言就开始的第一天就接触的,那就是printf函数,可是这个家族的函数,带给我们的便利却不是一点半点,所以写一篇用法总结。 1.printf函数 格式化输出,可以输出八进制,十进制,十六进制,可以输出字符串,%p输出地址。基本的东西就不在赘述了。 printf是有返回值的, 阅读全文
posted @ 2017-07-28 09:55 Crystal_Guang 阅读(809) 评论(0) 推荐(0) 编辑
摘要:虽然面试的时候,都会叫你不使用c库函数,自己完成某某函数的编写,但是库函数毕竟更让人信赖,我们没有任何理由怀疑库函数而使用自己的版本。不过当做练习,自己还是可以实现一下的。这里记录一下5th c primer附录中的可能用到的库函数。 size_t strlen (const char *s)返回字 阅读全文
posted @ 2017-07-25 22:30 Crystal_Guang 阅读(1476) 评论(0) 推荐(0) 编辑
摘要:malloc用于动态申请内存,这个学过C语言的都知道。忘记了在哪本书上看到,malloc申请的内存不一定是连续,于是一直记住了。这句话有错吗?没有!但是当时只是记住了这个知识点,而没有深入的思考。直到今天,思考一个问题: char *a=(char *)malloc(10); *(a+1)与a[1] 阅读全文
posted @ 2017-07-14 12:37 Crystal_Guang 阅读(974) 评论(0) 推荐(0) 编辑
摘要:C99中规定宏可以像函数一样带有可变参数,实现思想就是宏定义中参数列表的最后一个参数为省略号(也就是三个英文输入法下的句号)。这样预定义宏__VA_ARGS__就可以被用在替换部分中,以表明省略号代表什么。 eg: #include<stdio.h>#define Variable_Macro(.. 阅读全文
posted @ 2017-07-03 20:53 Crystal_Guang 阅读(1342) 评论(0) 推荐(0) 编辑
摘要:首先long double是C99引入的,但是如何printf格式化一个long double的数据的呢? scanf一个double数据,是%lf,printf一个float或者double都是%f。 但是输出一个long double是什么格式呢? 这个时候,我们需要c标准: 7 The len 阅读全文
posted @ 2017-06-27 15:58 Crystal_Guang 阅读(43240) 评论(0) 推荐(1) 编辑
摘要:编译器创建一个输出文件,这个文件包含了可重定位的对象。这些对象就是源程序中的数据和机器指令。 生成的具体信息可以见之前的博客:http://www.cnblogs.com/yangguang-it/p/6916769.html 的测试的输出。 写这个随笔是为了接应上一次的-> gcc,一个神奇的编译 阅读全文
posted @ 2017-06-18 16:32 Crystal_Guang 阅读(218) 评论(0) 推荐(0) 编辑
摘要:extern int *x; extern int y[]; x是一个指向int类型的指针,y是一个int型数组,没有给出数组长度,是不完整类型,但是声明的时候数组的长度并不是必须,但我还是建议加上数组的维数,那样只看声明就能知道数组有多大。上面两个声明是不同的数据类型。 什么是声明,什么是定义? 阅读全文
posted @ 2017-06-01 15:24 Crystal_Guang 阅读(348) 评论(0) 推荐(0) 编辑
摘要:typedef static char int8;这个声明正确吗? A:err 所以上面那个声明是错误的。 typedef为一种类型引入新的名字,而不是为变量分配空间,它并没有引入新的类型,而是为现有的类型取个新名字。在说到typedef时,有一个很好的例子是signal()函数声明,但是,一般而言 阅读全文
posted @ 2017-05-31 21:33 Crystal_Guang 阅读(717) 评论(0) 推荐(0) 编辑
摘要:C语言中的声明器,声明器就是标识符以及与它组合在一起的任何指针、函数括号、数组下标。 函数的返回值不能是一个函数,但允许是一个函数指针。 函数的返回值不能是一个数组,但可以是一个指针,或者指向数组的指针。 数组里面不能有函数,但允许数组里面还有数组。 位段的类型必须是int,unsigned int 阅读全文
posted @ 2017-05-17 21:07 Crystal_Guang 阅读(477) 评论(0) 推荐(0) 编辑
摘要:分析编程语言缺陷的一种方法是把所有的缺陷归于3类:不该做的做了,该做的没做,该做但做得不合适。 在使用switch case时,如果使用缺省的 fall through,请一定在旁边注释,因为97%的情况需要使用break,break跳出的是最近的那层循环或者switch语句。 下面代码,第一次调用 阅读全文
posted @ 2017-05-14 15:09 Crystal_Guang 阅读(656) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2017-04-22 14:48 Crystal_Guang 阅读(20) 评论(0) 推荐(0) 编辑
摘要:volatile译为:易变的。这不是和题目的让我保持原样矛盾了吗?其实不然,在变量前加上该关键字修饰,确实是告诉编译器,这个变量是一个容易改变的变量,不要对它进行优化,每次都要到变量的地址中去读取变量的数据,但正因为这样,才是保持了变量的原样,因为变量已经发生改变了,你却操作的是没有变化时的数据,这 阅读全文
posted @ 2017-04-16 17:07 Crystal_Guang 阅读(19437) 评论(0) 推荐(4) 编辑

点击右上角即可分享
微信分享提示