- 博客(10)
- 资源 (4)
- 收藏
- 关注
原创 预处理、编译和汇编这些步骤程序发生的变化
现在大多数的程序都是在IDE上进行开发的,预处理、编译、汇编和链接这些过程都有编译器已经设定完成,而实际程序在这个过程发生了什么,我们就无从得知了。但是作为程序员,我们有必要去了解在这个过程中我们的程序都发生了哪些变化。 下面就详细描述每一个步骤发生了什么。 参考《程序员的自我修养》 预处理 1.将所有的#define删除,宏定义进行替换。 2.处理所有条件预编译指令,比如#ifndef...
2018-03-31 22:00:31 416
原创 虚拟地址空间的内存布局
实际的物理内存程序员是不能直接管理的,在最早期的x86体系结构中。由于实模式,对内存不进行保护,致使病毒蠕虫横飞。出现保护模式以后,提供虚拟地址空间对实际物理内存抽象虚拟,形成一一映射的关系。...
2018-03-31 16:31:30 306
原创 memcpy函数的实现及内存重叠问题的分析
函数原型 void *memcpy(char *dest,const char *src,size_t n)头文件 #include<string.h>或#include<memory.h> 参数 1.memcpy中的三个参数分别为目标字符串 char *dest。2.源字符串 const char *src const 这里const是对sr...
2018-03-29 21:00:19 6702 4
原创 strlen()函数和sizeof()运算符的区别
strlen函数原型 size_t strlen(const char *string)size_t 是无符号整数的别名,在vs2008编译器中可以查看其宏定义typedef unsigned int size_t;这样定义的原因一方面是字符串的长度不可能是负数,另一方面是不可能为实数。 功能 其功能是获取字符串的长度。 返回值 在MSDN文档中查看strlen函数的返回...
2018-03-29 19:41:08 2210
转载 C语言不做数组下标安全性检查
C语言的编译器是不检查下标越界的,以前知道这个问题,可是没有想过是什么原因?总结如下: 1,不检查下标是否越界可以有效提高程序运行的效率,因为如果你检查,那么编译器必须在生成的目标代码中加入额外的代码用于程序运行时检测下标是否越界,这就会导致程序的运行速度下降,所以为了程序的运行效率,C/C++才不检查下标是否越界。 2,不检查下标是为了给程序员更大的空间,也为指针操作带来更多的方...
2018-03-29 19:04:33 2351
原创 数组作为形参退化为指针
一个小程序进行验证#include<stdio.h>void Sizeof(int arr[]){ printf("%d\n",sizeof(arr));}int main(void){ int arr[] = {1,2,3,4,5}; printf("传入Sizeof()函数进行计算:\n"); Sizeof(arr); ...
2018-03-29 18:26:43 579
原创 举例分析可变参数函数实现的过程
求总和函数(可变参数形式)int average(int n,...){ int sum; va_list args; va_start(args,n); for(int i = 0;i<n;++i) { sum += va_arg(args,int); } va_end(args); return sum...
2018-03-12 21:54:14 327
原创 printf函数的返回值!
printf函数原型 int printf(const char * p,...);返回值 返回值为整型,是输出字符的个数,即格式化字符串中字符的个数。举例int main(){ int count = printf("ni hao csdn,%d\n",111); //这里的格式化字符串包括逗号、空格、换行符、字母及数字共计16个字符 ...
2018-03-12 15:41:00 5822
转载 sscanf函数的用法
函数原型int sscanf( const char , const char , …); int sscanf(const char *buffer,const char *format,[argument ]…); buffer存储的数据 format格式控制字符串 argument选择性设定字符串 sscanf会从buffer里读进数据,依照format的格式将数据写入到argume
2018-03-11 21:32:58 493
原创 C语言 实现浮点数的整型强制转化
1.整型在内存中的存储形式 int 与 float 均是四个字节大小,即32位,但是他们在内存中的存储形式却是完全不相同的。下面举一个例子,在vs下通过查看内存验证一下以上的事实。 1.1 int a = 12; 由于是正数,所以符号位取0。 (12) = 1010B 所以其在内存中存储形式为 0101 0000 0000 000...
2018-03-11 20:09:36 31460 7
LinkedListProblems.pdf
2019-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人