自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 宏函数与自定义函数的区别(面试总结)

在c语言中,函数式宏定义和自定义函数的区别是什么?自定义函数:宏函数(1)函数式宏定义的参数没有类型,预处理器只负责做形式上的替换,而不做参数类型检查,所以危险性高;但因为省去了函数的调用,返回,释放,所以效率比自定义函数高;(2)调用真正函数的代码和调用函数式宏定义的代码编译生成的指令不同。如果MAX是个普通函数,那么它的函数体return a > b ? a

2016-07-29 15:39:34 7910 1

原创 PCB布线11条规则

如何画出功能稳定,美观的PCB呢,在这里,我总结了11条布线规则:1.走线最短原则:走线能多短就多短,最简单的原则,也是最重要的原则。这是板子功能否稳定的决定性因素。2.元器件布局,接插件一定要考虑好位置,所有人的DB9画在板子上都没考虑你的串口线能不能插进去。如果加了usb,也要考虑好位置,Pcb布局完成后可以1:1打印出来用原件摆好试试看。3.元器件布局,有电气连接的元器件尽量靠近

2016-07-29 10:53:56 1600

原创 (面试)C语言中关键字的总结

C语言中有很多的关键字,有register,static,const,extern,typedef,很多人可能只知道其表面含义,对其中的用法理解还不到位,希望这篇文章能帮助你:    1.register关键字Register关键字的作用:register为寄存器变量,简单来说,计算机一般是由CPU,内存,和硬盘组成的,而cpu是由运算器,控制器,存储器组成的,而register关键字的作

2016-07-25 10:19:45 1059

原创 企业级函数的编写:

如何写一个合格的函数呢?1、对所调用函数的错误返回码要仔细、全面地处理。即调用函数后,验证其返回值是否成功;2、防止将函数的参数作为工作变量。说明:将函数的参数作为工作变量,有可能错误地改变参数内容,所以很危险。对必须改变的参数,最好先用局部变量代之,最后再将该局部变量的内容赋给该参数。3、函数的规模尽量限制在200行以内。4、一个函数仅完成一件功能。5、为简单功能编写

2016-07-21 17:13:26 586

原创 char src[]与char *src的区别

char*src = "hello" 中的a是指向第一个字符‘a'的一个指针charsrc[20] = "hello" 中数组名a也是执行数组第一个字符‘h’的指针但二者并不相同:看实例:把两个字符串相加:运行结果为:把字符串加到指针所指的字串上去,出现段错误,本质原因:*d存放在常量区,是无法修的。而数组是存放在栈中,是可以修改的。两者区别如下:一.

2016-07-21 16:16:18 2121

原创 字符串函数的使用

1.strcat函数其一般形式为Strcat(字符数组1,字符数组2)其作用是连接两个字符数组中的字符串,把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后得到一个函数值---字符数组一的地址。例如:输出为:I LOVE CHINA I FEEL HAPPY注意:字符数组1 必须足够大,以便容纳连接后的新的字符串。  2.strcpy与strncpy函数

2016-07-21 10:47:21 855

原创 (面试)指针与数组的区别

1、从空间分配上来看,数组是静态分配,指针是动态分配内存;2、从访问效率上来看,数组是直接访问的,指针是间接访问;3、从安全性方面来看,数组易造成越界,指针易造成内存泄漏;4、从函数形参来看,传的数组名可以转化为指针;5、指针更偏向于地址的处理,数组偏向于值的处理;6、数组分配的空间是连续的;   指针分配的空间未必是连续的;

2016-07-20 19:46:30 567

原创 5招教你避免野指针

5招教你避免野指针招式一:在定义一个指针时,若指针无指向,设置为NULL举例如下图所示:输出效果为:那么什么叫作空指针呢?在c语言中,是这么定义的,#define NULL (void *)0该0地址是不允许操作,也不允许访问的;所以指针指向空时,既不允许访问,也不允许修改;而且在代码有错时,可以很方便的调试出来;招式二:当要往指

2016-07-19 20:32:56 903

原创 malloc,realloc,calloc的用法及区别

首先,在gcc编译器下,我们先观察一下这几个函数的功能:由此可以看出:函数malloc()在内存的动态存储区中分配一块长度为size字节的连续区域,参数size为需要内存空间的长度,返回该区域的首地址;函数calloc()参数size为申请地址的单元元素长度,nmemb为元素个数,即在内存中申请nmemb *size字节大小的连续地址空间;函数realloc

2016-07-19 16:22:47 6601

原创 C语言学习之指针变量

一、首先,指针是一个变量,,系统固定为指针分配内存空间,而且指针有自己的地址,指针能够存值,但这个值比较特殊---——地址;1、指针的类型(1)  int *ptr;//指针类型是int *(2)  char *ptr;//指针类型是char *(3)  int **ptr;//指针类型是int **(4)  int (*ptr)[3];//指针类型是int (*)[3](

2016-07-16 17:23:40 527

原创 C语言学习之位操作符的使用

一、常用的位运算符有:&,|,~,>,^位运算一般可用来解决以下问题:1、&运算(1)、清0特定位:(mask中特定位置0,其他位为1,s=s&mask) (2)、取某数中指定位:(mask中特定位置1,其他位为0.s = s&mask)举个例子:请编写一个c程序,输入十进制整数,顺序输出32位二进制数方法二:要获取一个数的m到n位,

2016-07-16 15:01:12 400

原创 遍历整型数组的三种方式

2016-07-14 18:59:44 1422

原创 C语言学习笔记——格式化输入输出

输入可以有三种方式:scanf(),getchar(),gets(),它们有哪些区别呢?1.  scanf()功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]);scanf()函数是通用终端格式化输入函数,它从标准输入设备(键盘) 读取输入的信息。可以读入任何固有类型的数据并自动把数值变换成适当的机内格式。其调用格式

2016-07-14 18:16:34 4759

原创 C语言学习之路(二)数据类型基本知识点

1.什么是数据类型?数据集合的划分,不同数据类型对CPU 的意义是不同的1.  数据类型有哪些?   3.如何定义变量以及左右法则1.定义变量的左右法则:左右法则:首先从最里面的圆括号内未定义的标识符开始阅读看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。定义变

2016-07-11 14:49:56 332

原创 C 语言学习之路(一)

一、C语言概述1.  嵌入式开发中为何选择C语言(操作系统内核选择C的原因)?(1)  语言特点:1.  C语言具有出色的可移植性(修改的原代码少),能在多种不同体系结构的软/硬件平台上运行;2.  C语言具有简洁紧凑,使用灵活的语法机制,并能直接访问硬件(操作系统直接控制硬件,以此提高了效率)举个例子:我们去图书馆借书,如果没有图书管理员的帮助,我们就需要在浩如烟海的书籍中依

2016-07-11 10:04:59 442

原创 make 学习笔记二

1.关于伪目标,具体定义为:伪目标不是真正的目标文件,所以通过伪目标可以让Make 工程管理器只执行规则命令,而不用创建实际的目标文件。伪目标的使用方式为:make 伪目标名由于伪目标不是真正的目标文件,只是一个符号。为了不和真实的目标文件混淆,最好使用“.PHONY”对伪目标进行标识。2.make –f 的使用,该命令是用来配置Makefile的,具体实现为:make –f Ma

2016-07-10 01:02:03 452

原创 make学习笔记(一)

1、   由于实际开发中,一个程序往往是由多个源文件组成的,所以单用gcc调试往往是很麻烦的,加上若在调试过程中只修改了部分源文件,用gcc命令编译的话会将连同没被修改的源文件一起编译,这大大地降低了编译效率,由此引入了make工程管理器。2、   make是一个半自动化的工程管理器,它需要依赖Makefile对程序进行编译。他有以下两方面的优越性;(1)   使用方便;通过命令make就

2016-07-09 13:30:18 646

转载 -O1,-O2,-O3编译优化知多少

1.从.c文件到可执行文件,其间经历了几步?高级语言是偏向人,按照人的思维方式设计的,机器对这些可是莫名奇妙,不知所谓。那从高级语言是如何过渡到机器语言的呢?这可是一个漫长的旅途呀!其中,得经历这样的历程:C源程序->编译预处理->编译->汇编程序->链接程序->可执行文件1.预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:

2016-07-07 00:32:05 59339

原创 由.c到可执行文件,我们要走哪几步?

从.c文件到可执行文件,其间经历了几步?高级语言是偏向人,按照人的思维方式设计的,机器对这些可是莫名奇妙,不知所谓。那从高级语言是如何过渡到机器语言的呢?这可是一个漫长的旅途呀!其中,得经历这样的历程:C源程序->预处理->编译->汇编->链接程序->可执行文件1.预处理 读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。伪指令主要包括以下四个方面:(1)宏

2016-07-06 22:37:16 857

空空如也

空空如也

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

TA关注的人

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