自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 register,static,extern,const,typedef,volatile关键字

一.register用register修饰的作用:请求编译器尽可能(CPU寄存器资源有限)将变量的值保存在CPU内部寄存器中,省去了CPU从内存中抓取数据的时间,提高了程序的运行效率。何时用register修饰变量?将频繁使用的变量声明为register变量。注意事项:①register只能修饰局部变量,不能修饰全局变量和函数(全局变量可被多个程序访问,只有当前程序知道

2016-07-27 19:42:55 301

原创 函数的相关知识

函数的三要素:函数名、函数形参、返回值 1.函数名:①函数名是指针常量,保存函数的入口地址。       ②自注释性、动词+名词 - - - 增加可读性           例:delete_ch_count_min 2.函数形参:①(写)当需要修改实参的值时,将实参地址传给形参。②(读)当只使用不修改实参的值时,将实参值传给形参。 

2016-07-26 13:03:40 289

原创 C语言如何"实现"面向对象?

实现“类”:c语言中用struct来表述对应的类。实现“封装”:一个.c文件中存放一个函数(用以实现一个功能)或存放一个结构体。实现“继承”:即结构体的包含关系。一个结构体的成员变量的类型为另一个结构体的类型。实现“多态”:用函数指针实现。函数指针作形参。例: int add(int num1,int num2) { ret

2016-07-20 20:51:28 347 1

原创 malloc,realloc,calloc的使用场合及特点,以及malloc的实现原理

malloc:原型 :  extern void *malloc(unsigned int num_bytes);何时使用:当需要在内存的动态存储区中分配一块长度为num_bytes字节的连续区域时。参数num_bytes为需要的内存空间的长度,返回该区域的地址。特点:malloc在动态分配完内存后不对分配的内存空间初始化,里边数据是随机的垃圾数据。

2016-07-18 20:14:00 881

原创 memcpy和strcpy的区别及memcmp和strcmp的区别

strcpy与memcpy的区别:strcpy的原型:char *strcpy(char *dest, const char *src)strcpy是拷贝字符串。①以\0为标志结束(即一旦遇到'\0'拷贝过程即停止)。②只能拷贝字符串。memcpy的原型:void *memcpy(void *dest, const void *src, size_t n);memcpy

2016-07-16 09:47:11 980

原创 什么是野指针和内存泄漏?如何避免野指针

内存泄漏:①访问已经释放的内存    ②访问没有权限的内存野指针:指向内存被释放的内存或者没有访问权限的内存的指针。“野指针”的成因主要有3种:(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。例如char *

2016-07-15 20:35:48 9885

原创 物理内存和虚拟内存的区别 及 什么是虚拟地址空间

物理内存(内存条):当打开程序时,系统会将这些程序加载到物理内存上虚拟内存(硬盘):虚拟的不是物理内存,而是代替物理内存行使存储的功能,物理内存的运行程序的功能是无法用虚拟内存来完成物理内存与虚拟内存的关系:当运行程序过多,物理内存不够用时,系统会将一部分硬盘空间当内存使用,这部分空间就是虚拟内存虚拟地址空间(作用:解决物理内存稀缺问题):系统为每个进程所分配的4GB虚拟地址空

2016-07-11 14:14:17 2452 2

原创 C语言的特点是什么?

1.为什么嵌入式开发中选择C语言作为开发语言 / C语言的特点是什么?①移植性好:适用于不同平台,代码移植时只需做较少修改或不做修改②能直接访问硬件:    (汇编和C都能直接访问硬件,但C是高级语言含高级语法,所以对硬件做复杂操作时选择C语言,对硬件做初始化时选择汇编)③运行效率高:C可以直接在机器上运行,一些高级语言需要相应的语言解释器做解释后,才能在机器上运行。(比如

2016-07-11 10:55:01 4237

原创 ELF格式文件特点的简单说明

ELF:可执行连接文件格式。ELF文件优点:1. 支持不同平台上的交叉编译和交叉链接,可移植性性强(与Linux下其他可执行文件(a.out,cof)相比)2. 在执行时支持动态链接共享库ELF文件类型:1. 可重定位文件:用户和其他目标文件一起创建可执行文件或者共享目标文件,例如lib*.a文件2.可执行文件:用于生成进程映像,载入内存执行,例如编译好的可

2016-07-09 10:12:35 1440

原创 gcc优化的简单说明

gcc默认提供了5级优化选项-O0:无优化(默认)-O和-O1:最基本的优化等级。能减少目标文件大小和生成目标文件的时间,在编译大型程序时会显著增加编译时内存的使用。-O2:-O1的进阶,推荐的优化等级。包含-O1的优化。比-O1多一些标记,不执行循环展开以及函数内联,因此减少了编译时间和优化了目标文件的执行性能。-O3:包含-O2的优化。增加-finline-functions,

2016-07-07 12:42:27 486

原创 汇编程序.c到a.out的生命历程

使用gcc编译程序时,编译过程可以分为四个阶段:1.预处理阶段预处理阶段就是将头文件中的内容加载到.c文件的上方。输入命令gcc -E test.c -o test.i。执行-E命令,只对.c文件进行预编译,不做其他操作。将生成文件命名为test.i2.编译阶段编译阶段会进行词法分析,语法分析,语义分析。在shell中输入命令“gcc -c te

2016-07-07 00:34:06 492 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除