摘要: 在实现memcpy函数的时候,我们说过要考虑内存覆盖的问题,到底什么是内存覆盖呢,他的出现对程序到底有什么影响呢?我们又要如何去解决这种问题的发生? 首先先看一般人经常实现的memcpy函数: #include<stdio.h> #include<assert.h> #include<string. 阅读全文
posted @ 2016-07-20 21:29 请叫我小小兽 阅读(2067) 评论(0) 推荐(0) 编辑
摘要: 在《C陷阱与缺陷》第二章第一节中有这样一个声明: (*(void(*)())0)(); 看到这样的表达式估计让不少人都“不寒而栗”了吧,其实虽然看起来复杂,但是构造这类表达式其实只有一条简单的规则:按照使用的方式来声明。 首先先介绍一个著名的解析法则:右左法则:首先从圆括号起,然后向右看,然后向左看 阅读全文
posted @ 2016-07-20 20:42 请叫我小小兽 阅读(1987) 评论(0) 推荐(0) 编辑
摘要: 所谓的宏就是一种预处理命令,什么是与处理呢?即在编译过程之前先对程序代码做出的必要的转换处理。宏有两个作用: 1.当遇到需要将程序某个特定的数量在程序中出现的所有实例通通加以修改时,程序只需改动一处即可。 2.大多数C语言函数调用时都会带来重大的系统开销,而宏看上去像一个函数却没有函数调用的开销。 阅读全文
posted @ 2016-07-19 18:50 请叫我小小兽 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 在储存信息时,有时并不需要一个字节的空间而是只需要几个二进制位就足够了。因此在C语言中为了节省空间提高效率,因此引出了位域(也叫位段)的概念。 如下代码中: #include<stdio.h> typedef struct Test { char a : 1; char b : 1; char c 阅读全文
posted @ 2016-07-19 07:17 请叫我小小兽 阅读(1718) 评论(0) 推荐(0) 编辑
摘要: 在C语言编程中,有时为了达到减少运行的时间的目的,需要浪费一些空间;而有时为了节省空间,使它的运行时间增长。而字节对齐则是为了访问效率,用空间换取时间。 要掌握字节对齐,首先得明确一下四个概念: 1.基本数据类型的自身对齐值 在32位系统下基本数据类型有其自身的对齐值: char 1个字节 shor 阅读全文
posted @ 2016-07-19 07:14 请叫我小小兽 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 在分辨这些重要的概念时,我们先回顾一下前面所讲的C之三值合一,由于三个值所求出的地址是相同的,所以经常有传言说他们都是首元素的地址。这种说法是不正确的。为什么说它是不正确的呢? 首先定义一个指针,将三个值赋给它 *p=ar; *p=&ar[0]; *p=&ar//出错 程序编译后在表达式*p=&ar 阅读全文
posted @ 2016-07-19 07:13 请叫我小小兽 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 1.memset()内存设置函数(初始化) void *my_memset(void* dest, int c, size_t count) { assert(dest != NULL); char *pdest = (char *)dest; while (count-->0) { *pdest+ 阅读全文
posted @ 2016-07-18 08:14 请叫我小小兽 阅读(349) 评论(0) 推荐(0) 编辑
摘要: 1.strlen()函数是求解字符串的有效长度的 1)非递归实现 size_t my_strlen(const char *str) { assert(str != NULL); //断言,保证指针参数不能为空 size_t count = 0; const char *pstr = str; // 阅读全文
posted @ 2016-07-18 08:09 请叫我小小兽 阅读(782) 评论(0) 推荐(0) 编辑
摘要: 在学习C语言中我们会发现这样一种情况: #include<stdio.h> Int main() { Int ar[10]; printf(“%p\n”,ar); printf(“%p\n”,&ar); Printf(“%p\n”,&ar[0]); } 运行上面这一段代码之后发现:三个运行结果都是一 阅读全文
posted @ 2016-07-17 16:58 请叫我小小兽 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 在学习C语言时以及面试中,经常会见到strlen()与sizeof()这一对容易混淆的概念,搞清楚这两个概念,往往考察了编程人员对语言的基本掌握能力。 首先大家先明确两个概念是: 1.strlen()是函数,而sizeof()是表面看起来像函数的关键字。 2.Strlen()求得是长度,针对的对象是 阅读全文
posted @ 2016-07-17 16:55 请叫我小小兽 阅读(435) 评论(0) 推荐(0) 编辑