![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c
文章平均质量分 58
raining_heart
raining.zq@qq.com
展开
-
c语言结构体指针成员初始化
今天遇到一个奇怪的问题,错误提示段错误,明显是指针操作有问题。找了N久才把问题定位在自定义的链表上。next指针一直有数据。struct S{ void (*call)(); S *next;};上面一个简单的结构体,在程序中: struct S *s = NULL; s = (struct S *)malloc(原创 2013-04-01 12:29:44 · 5264 阅读 · 0 评论 -
数组指针&指针数组
一、数组指针 int (*p)[n] 重点:()优先级高([]、()的优先级是一样的,但它们的方向是从左至右的,所以先运行括号里的*p),首先说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度是n,也可以说是p的步长。也就是说执行p+1时,p要跨过n个整型数据的长度(n*sizeof(int))。 如要将二维数组赋给一指针,应这样赋值: in转载 2013-03-20 22:14:36 · 682 阅读 · 0 评论 -
free之后的NULL和非NULL
今天写了个链表,需要不断的删除和插入,程序总是无缘无故挂掉,找了N久,终于发现了问题所在。把一个node free掉,它并非NULL,也就是if(node!=NULL)会成立,于是挂掉了。以前没这个习惯,因为总是直接改变它指向的地址,以后得留意了。free只是让内存释放,但他指向的东西并非NULL,而是乱码。free(p);p = NULL;指向指针原创 2013-04-03 20:45:49 · 4114 阅读 · 0 评论 -
关于函数参数的const char *和char*引发的bug
今天在做一个linux模块,需要传递一个字符串,理所当然:void fuc(char *string ){ .....;}一般正常的写法都说考虑fuc是否会对字符串进行改动而定义参数,在一般,参数只允许只读。于是:void fuc(const char *string){ .....;}由于有时懒散,传进去的刚好是const类型,在函数原创 2013-04-15 22:56:33 · 1419 阅读 · 0 评论 -
纠结的float和unsigned char
float和unsigned char间的强制转换出现的问题:float f = 0.040;f = f*200;unsigned short d = (unsigned short)(f);printf("test float:%d\n",d);f =0.040;d = (unsigned short)(f*200);printf("test float:%d原创 2013-07-13 08:44:56 · 4005 阅读 · 0 评论 -
scanf细节--字节问题
scanf非常简单的函数,估计不少人一开始学的就是它吧,但我从来都没有去直视过它,直到今天调程序时出现的小小插曲。定义一个变量:unsigned char a;然后:scanf("%d",&a);知道的人一看就知道问题出现在哪了,但是,恰恰我忽略了。本来只写一句是没什么问题的,程序正常,可是,刚好问题出现了。定义几个变量:unsigned char a,b,c,d,e,f;原创 2013-09-30 12:42:52 · 1778 阅读 · 0 评论 -
简单c8051F120上ucosII的移植记
因为51系列单片机应用很广,而且UCOSII经历多少代工程师的翻炒,一开始我就觉得这移植应该不会太久。现在简单试一下基本OK了,简单记下内容吧。主要功劳归一位牛人,有移植ucos到51的人基本都应该看过他的文章:《uCOS51移植心得》--巨龙公司系统集成开发部 杨屹这篇文章讲得够清楚了。我其他花的时间基本是无相关的,因为刚刚拿到这板,也没有示例,就要移植ucos进去,再而且之原创 2014-03-28 17:32:46 · 1952 阅读 · 1 评论