C语言
文章平均质量分 76
rebuild_embedded
这个作者很懒,什么都没留下…
展开
-
static和extern 的区别
一些基本概念:1. 编译单元(模块): 在IDE开发工具大行其道的今天,对于编译的一些概念很多人已经不再清楚了,很多程序员最怕的就是处理连接错误(LINK ERROR), 因为它不像编译错误那样可以给出你程序错误的具体位置,你常常对这种错误感到懊恼,但是如果你经常使用gcc,makefile等工具在linux或者嵌 入式下做开发工作的话,那么你可能非常的理解编译与连接的区别!当在转载 2014-08-20 21:54:06 · 443 阅读 · 0 评论 -
函数返回局部变量
一般的来说,函数是可以返回局部变量的。 局部变量的作用域只在函数内部,在函数返回后,局部变量的内存已经释放了。因此,如果函数返回的是局部变量的值,不涉及地址,程序不会出错。但是如果返回的是局部变量的地址(指针)的话,程序运行后会出错。因为函数只是把指针复制后返回了,但是指针指向的内容已经被释放了,这样指针指向的内容就是不可预料的内容,调用就会出错。准确的来说,函数不能通过返回指向栈内存的指针(注意转载 2015-08-10 09:07:13 · 536 阅读 · 0 评论 -
typedef的语法描述
typedef的语法描述 在现实生活中,信息的概念可能是长度,数量和面积等。在C语言中,信息被抽象为int、float和 double等基本数据类型。从基本数据类型名称上,不能够看出其所代表的物理属性,并且int、float和double为系统关键字,不可以修改。为 了解决用户自定义数据类型名称的需求,C语言中引入类型重定义语句typedef,可以为数据类型定义新的类型名称,从而丰转载 2015-08-12 18:19:12 · 1029 阅读 · 0 评论 -
结构体字节对齐
结构体(struct)的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。先看下面定义的两个结构体.struct{ char a; short b; char c;}S1;struct{ char a; char b; short c;}S2;分别用程序测试得出sizeof(S1)=6 ,转载 2015-08-04 11:37:04 · 439 阅读 · 0 评论 -
编写可变参数c函数
前言:本文在很大程度上改编自网友kevintz的“C语言中可变参数的用法”一文,在行文之前先向这位前辈表示真诚的敬意和感谢。一、什么是可变参数我们在C语言编程中有时会遇到一些参数个数可变的函数,例如printf()函数,其函数原型为:int printf( const char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的(用三转载 2015-07-23 20:27:42 · 358 阅读 · 0 评论 -
C语言宏定义,内置宏,__FILE__,__LINE__,## 用法
当然宏定义非常重要的,它可以帮助我们防止出错,提高代码的可移植性和可读性等。下面列举一些成熟软件中常用得宏定义1,防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容 …#endif2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植。typedef unsigne转载 2015-07-23 20:18:56 · 445 阅读 · 0 评论 -
inline 和 宏定义的区别
inline函数是C++引入的机制,目的是解决使用宏定义的一些缺点。1.为什么要引入内联函数(内联函数的作用) 用它替代宏定义,消除宏定义的缺点。宏定义使用预处理器实现,做一些简单的字符替换因此不能进行参数有效性的检测。另外它的返回值不能被强制转换为可转换的合适类型,且C++中引入了类及类的访问控制,在涉及到类的保护成员和私有成员就不能用宏定义来操作。2.inline相比转载 2015-07-23 20:22:32 · 584 阅读 · 0 评论 -
用二级指针作为形参建立二叉树
今天在写二叉树的建立时,遇见了指针作为参数的bug。经过查找,进一步的理解了二级指针。二级指针,也就是指针的指针,作用主要是为了改变指针本身的数据,在这里,可以把指针本身看成一个变量,既然是变量,那就肯定可以修改其内容,所以可以借助一个二级指针来改变指针本身的数据。用指针作为形参,类似二叉树先序遍递归历的方法,建立二叉树。写了如下代码。typedef struct node {原创 2015-08-05 21:21:37 · 1883 阅读 · 2 评论