- 博客(17)
- 问答 (1)
- 收藏
- 关注
原创 c语言内存分配
《c语言深度剖析》中关于内存管理部分的测试,可以很好的加深理解。#include#include#includeint main(){char *pstr = NULL;char *pstr2 = NULL;pstr = (char *)malloc(36);strcpy(pstr,"hello world");free(pstr);
2015-11-27 18:02:54 295
原创 c语言递归函数
近期再次阅读《c语言深度剖析》对递归有了更好的的理解。#include#includevoid func(int a){if(a>0)func(a/2);printf("%d \r\n",a);}int my_strlen(char *str){assert(NULL != str);if('\0' == *str)
2015-11-27 17:58:45 510
原创 溢出 隐式转换 负数存储
下面是对《c语言深度剖析》中的几段代码的测试,可以帮助加深理解:#include#includeint main(){/* 255 溢出char a[1000];int i,len;len = 0;for(i = 0;i{a[i] = -1-i;}len = strlen(a);*/// -0 补码 0000 0
2015-11-27 17:50:50 412
原创 c语言返回栈内存的问题
读到林锐的《c语言深度剖析》书中讲return时提到了这个问题,然后好好想了一下,写程序测试,有了进一步的理解。书中是这样说的:return 语句不可返回指向 “栈内存” 的 “指针” 因为该内存在函数体结束时被自动销毁。#includeint fun1(){int a;a = 2;return a;}char *func2(){
2015-11-25 14:21:21 554
原创 c语言有符号数取值范围
c语言中有符号数的取值范围问题:比如char类型 [-128,127],当为正数时 0111 1111(二进制)对应十进制 127,这没有任何问题。但是当为负数时 -128 是怎样得到的呢?最高位为1时候代表负数,我们通常会认为11111111的时候是最小值即-127(当表示原码的时候 最小值-127是对的)其实不是这样的,因为计算机是采用的补码形式,根据补码的规则11111111
2015-11-25 09:27:32 1037
转载 VS2012 error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
原因与解决方案:纯c要求局部变量定义必须在函数或局部空间的开头,然后才能有其他语句。纯c确实对变量声明的位置有要求,c++却可以随用随定义的。 说明vs是严格执行了纯C的标准。变量任意定义是c99的标准
2015-11-25 09:20:22 1965 1
原创 VS2012使用strcpy_s的问题
1>g:\c_test\time\singlepointer\singlepointer\test.c(15): error C4996: 'strncpy': This function or variable may be unsafe. Consider using strncpy_s instead. To disable deprecation, use _CRT_SECURE_NO_W
2015-11-25 09:03:54 1576
原创 最近遇到的一个数组越界的BUG
关于二维数组的问题,之前在我代码中有如下这样一段,(//CMD:DS:1234567890abcd:1234567890:5:0016:44:BLE A IM 20:73:6a:18:ec:e8,11:22:33:44:55:66)当解析到 e8,11 时会导致 dest 越界,但是由于我每次 cmd_line ->Cmdpos += 3;,这样刚好解析到的MAC也是对的,所以当时没有发现。c
2015-11-20 18:50:37 623
原创 strlen的使用问题
最近在做项目时,用strlen测试的字符串长度传递到另外一个函数中,结果由于含有'0'导致出错。应该是遇到了我下面的第二种情况,测试代码如下:#include#includeint main(){int len1,len2,len3;char *str = "hello\0world";char str2[] = {'h','e','l','l','o',0,'
2015-11-19 19:02:29 631
原创 c语言关于时间的两个函数
根据日期转换为星期几,以及由天数得到月份,代码如下:#includeint datetoweek(int yr, int mn,int day){int i;int days=0;int s;int week;int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};if((0==yr%4 && 0!=yr
2015-11-19 18:53:46 407
转载 c语言va_list snprintf 的实现
首先列出我自己实际遇到的一个例子:在串口向 PC 发送数据时为了实现可变参数的功能,这是工程中遇到的一段代码:int SerialDbgPrintf(uint8 type, char *fmt, ...){if(type == ATCMD){int cnt;char string[MAX_PRINTF_STR_SIZE] = {'\0'};va_list a
2015-11-19 09:05:33 1696
转载 crc32校验算法
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选定。CRC校验实用程序库在数据存储和数据通讯领域,为了保证数据的正确,就不得不采用检错的手段。以下是CRC32的C语言实现,经过测试,能够正确运行:[cpp] view plaincopy
2015-11-18 19:16:45 2443
转载 c语言回调函数
本文转载自 http://www.cnblogs.com/2eggs/archive/2012/11/20/2779567.html1234567891011121314151617181920212
2015-11-18 19:10:02 563
原创 c语言字符串转换为16进制和10进制数字
字符串转换为16进制或者10进制:1、使用自己编写的函数。2、使用库函数。将字符串转换为16进制两种方法的代码:#include#include#include int HexStr2Int(char *buf) {int result = 0;int tmp;int len,i;len = strlen(buf);printf("len
2015-11-18 19:06:04 8575
原创 KEIL编译后Program Size: Code=1032 RO-data=336 RW-data=12 ZI-data=1836 的含义
Code: 程序所占用的FLASH大小,存储在FLASH.RO-data: Read-only-data,程序定义的常量,存储在FLASH中。RW-data:Read-write-data,已经被初始化的变量,存储在SRAM中。ZI-data:Zero-Init-data,未被初始化的变量,存储在SRAM中。
2015-11-14 10:07:21 12410 1
原创 JLINK驱动刷新之WIN7
今天遇到一个问题,我在新的版本KEIL提示我更新JLINK驱动之后,出现JLINK驱动丢失现象,指示灯也不亮了。在网上查了许多资料尝试了好久,最后终于弄好了1、主要问题出现在我执行完各个操作之后,最后在PORT出现了 bossa program com 这样的一个驱动,直接导致我设置好 SAM-PROG2.4之后,write按钮一直显示为灰色。2、然后我禁止了系统自动UPDATE驱动,选择
2015-11-07 22:36:58 9695 2
空空如也
s3c2416 keil 开发的启动文件 头文件
2015-04-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人