c/c++编程
xkf321
这个作者很懒,什么都没留下…
展开
-
C编程中使用全局变量应注意的事项
1、尽量用局部变量替代全局变量。如果用局部变量能实现功能,最好用局部变量。2、在函数仅仅只是要用到某个全局变量,而无需改动时,就将全局变量通过形参传递进来,变成局部变量使用。并在定义时使用const。这是避免全局变量在函数中被意外的改动。如在判断语句中将'=='误写成'='。这时首先因为在函数内的是局部变量所以即使出错也不会影响全局变量和其他函数或模块。其次因为定义的是const类型,当发生意转载 2016-11-08 22:04:43 · 2001 阅读 · 0 评论 -
字符串定义方法
字符串定义方法有两种方法:1) 用字符数组;2) 用字符指针;对应两种定义方法,有不同的初始化以及赋值方法 对字符数组,有以下几种定义方法:1) char str[]="12345";或给字符串加上大括号:char str[]={"12345"};这转载 2017-03-29 16:17:23 · 1348 阅读 · 0 评论 -
sprintf用法详解
printf可能是许多程序员在开始学习C语言时接触到的第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类型的数据构造成字符串时,sprintf的强大功能很少会让你失望。由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出。这也导致sp转载 2017-03-20 22:40:26 · 609 阅读 · 0 评论 -
C语言深入探讨实战篇之结构体字节对齐(四)
在有些编程的时候,很多简单的数据类型之间有关系,如一个学生管理系统中,学生的身高,体重,名字等这些都要变量存起来,如果分别定义变量,在编程的时候比较乱,所以通常的做法是定义一个结构体,然后把这些东西放到结构体里面,要管理一个学生就操作这个结构体就行了。前面我们分析了int,float多个字节中字节的排列顺序。同样在结构体当中是由很多的基本数据类型组合起来的,这些里面也有些规则,在定义一个结构体后对转载 2016-12-26 19:08:51 · 408 阅读 · 0 评论 -
C语言深入探讨实战篇之float类型表示(三)
C语言中需要用到小数的时候就要引入存小数的变量,小数在C语言中叫浮点数,按精度来划分,类型有两种:单精度浮点数float、双精度浮点数double不同的编译环境这两种类型可能占用的字节数有所不同,在VC中float类型占用4个自己,double占用8个字节在Keil当中float类型也是4个字节,但double这个字节也只有4个字节(实际上和float没有任何区别,精度范围都一样,连内转载 2016-12-26 18:56:24 · 742 阅读 · 0 评论 -
C语言深入探讨实战篇之大小端模式(二)
对于基本类型float\double\int等这些个长度不是1个字节的数据类型(补:不同编译环境可能编译出来的的不同,如在VC当中int占4个字节,在TC、Keil、IAR等一些编译环境下int占2个字节,具体到某个环境下占几个字节可以定义一个相应的变量,通过sizeof这个关键字去测试,看值是多少就是几个字节,然字节数不同仅仅表示的范围宽、窄的区别而已,其余没有任何区别,2个字节的int只能表示转载 2016-12-26 18:55:05 · 338 阅读 · 0 评论 -
C语言深入探讨实战篇之变量溢出(一)
对于有符合的char变量,127加上1等于多少?-128减去1又等于多少?对于无符号的char变量,255加1等于多少?0减去1等于多少?把一个有符号的-16赋给一个无符号的char变量又等于多少?把129赋给有符号的char变量又等于多少?如果你非常清楚下面的这部分你就不要看了;如果你不清楚,恭喜你,读完下面的内容将彻底明白。首先,要明白无符号和有符号的表示,无符号8位全部表示数,所转载 2016-12-26 18:53:34 · 975 阅读 · 0 评论 -
模块化编程总结-终极篇
一直以为自己对模块化编程彻底明白了,但是偶尔看到有些条件编译感觉莫名其妙,今天一起做个总结。1、单个功能模块建立源文件.c,和头文件.h,注意.c后缀对于C语言必须小写,有些编译器(如GCC),会认为大写C后缀是C++文件。2、对于功能模块内部使用的全局变量、函数不要放到头文件中,应该用static声明放到源文件模块的前面部分,这样做防止多文件链接的时候(编译的时候不会出错)出现函数名、变转载 2016-12-26 18:33:19 · 1681 阅读 · 0 评论 -
void指针(void *的用法)
指针有两个属性:指向变量/对象的地址和长度但是指针只存储地址,长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同,比如: int*从指定地址向后寻找4字节作为变量的存储单元 double*从指定地址向后寻找8字节作为变量的存储单元 1.void指针是一种特别的指针 void *vp //说它特别是因转载 2016-10-28 18:42:59 · 644 阅读 · 0 评论 -
指针函数与函数指针的区别
在学习arm过程中发现这“指针函数”与“函数指针”容易搞错,所以今天,我自己想一次把它搞清楚,找了一些资料,首先它们之间的定义:1、指针函数是指带指针的函数,即本质是一个函数。函数返回类型是某一类型的指针 类型标识符 *函数名(参数表) int *f(x,y); 首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受转载 2016-10-30 18:12:26 · 168 阅读 · 0 评论 -
话说C语言const用法
const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰的对象为常量(immutable)。我们来分情况看语法上它该如何被使用。1、函数体内修饰局部变量。例:void func(){const int a=0;}首先,我们先把const这个单词忽略不看,那么a是一个int类型的局部自动变量,我们给它赋予初始值0。转载 2016-10-30 17:09:52 · 285 阅读 · 0 评论 -
bool类型变量与0比较的if语句应该怎样书写
bool bTestFlag = FALSE;//想想为什么一般初始化为FALSE 比较好?A), if(bTestFlag == 0); if(bTestFlag == 1);B), if(bTestFlag == TRUE); if(bTestFlag == FLASE);C), if(bTestFlag); if(!bTestFlag);哪一组或是那些组正确呢转载 2016-10-30 12:40:36 · 720 阅读 · 0 评论 -
C语言register关键字—最快的关键字
register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU 的寄存器也就那么几个或几十个,你要是定义了很多很多register 变量,它累死也可能不能全部把这些变量放入寄存器吧,轮也可能轮不到你。一、皇帝身边的小太监----寄存器 不知道什么是寄存器?那见过太监没有?没有?其实我也没有。没转载 2016-10-30 12:10:55 · 212 阅读 · 0 评论 -
全局变量、局部变量(auto局部变量)、静态全局变量、静态局部变量的区别
C/C++变量根据定义位置的不同,具有不同的作用域和存储域。作用域可分为6种:全局作用域,局部作用域,语句作用域,类作用域,命名作用域和文件作用域。存储域可分为2种:静态存储区和栈区,另:函数申请内存空间在堆区里面(这不在本文讨论范围之内)。首先,从作用域看,全局变量具有全局作用域,只需在一个源文件中定义,就可以作用于所有的源文件。当然,其它不包括全局变量定义的转载 2016-10-30 12:08:27 · 1400 阅读 · 0 评论 -
static
有时希望函数中的局部变量的值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量保留上一次函数调用结束时的值。这时就应该指定该局部变量为静态局部变量(static local variable)。例 静态局部变量的值。 #include using namespace std; int f(int a)转载 2016-10-30 11:58:53 · 356 阅读 · 0 评论 -
二级指针作为函数参数传递初始化的一点总结
http://blog.csdn.net/ochonglangzheo/article/details/9788209我用代码来说明:[cpp] view plain copyprint?typedef struct{ int *top; int *base; int stack_size; }Sq转载 2017-08-28 20:13:02 · 845 阅读 · 0 评论