C语言
文章平均质量分 54
大号虾米
这个作者很懒,什么都没留下…
展开
-
数据类型——变量常量和声明与定义
在C的世界里,不同代码“国度”以.c文件为国界分隔开来,在单个国家里有不同函数占山为王,每个C程序世界里只有一个君主(MAIN),main通过下传指令(参数),调用各种军阀(函数),来掌控。某军阀(函数)心怀叵测,不想单纯听从于main的指挥调度,树立了自己的政权旗帜static。static不同听从于main的调度,自己做主,私藏金库(空间)。不同的国家(不同的.c文件)之间通过exte原创 2016-11-01 14:21:46 · 794 阅读 · 0 评论 -
内存管理——数据存放位置和野指针
一、1、未初始化的全局变量(.bss段)bss段用来存放那些没有初始化和初始化为0的全局变量int bass_array[1024 * 1024];int main(int argc, char* argv[]){ return 0;}#gcc -g bss.c -o bss.exe#ls -l bss.exe-rwxrwxr-x 1 root root 597原创 2016-11-02 16:19:34 · 474 阅读 · 0 评论 -
内存管理——常见内存错误及对策
发生内存错误是 件麻烦事,编译器不能自动的发现这些错误,通常是在程序运行时才能捕捉到,而这些错误大多没有明显症状,时隐时现增加了改错的难度。1)内存被分配成功,却使用了它。如果指针p是函数的参数,那么在函数的入口处用“assert(p != NULL)"进行检查;如果用malloc或new来申请内存,应该用”if(p == NULL)"或“if (p!=NULL)"进行预防处理。2)内存分原创 2016-11-02 20:08:25 · 736 阅读 · 0 评论 -
预处理——老大宏定义和使用技巧
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成的。对当一个源文件进行编译时,系统将自动引用预处理程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译。C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块程序设计。宏定义是由源程序原创 2016-11-03 14:27:37 · 404 阅读 · 0 评论 -
预编译——老二文件包含和老三条件编译
预处理程序提供了条件编译的功能,可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有三种形式,下面分别介绍。1、第一种形式#ifdef 标识符 程序段1#else 程序段2#endif它的功能是,如果表示符已被#define命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为原创 2016-11-03 15:13:53 · 305 阅读 · 0 评论 -
函数
函数声明与定义不同函数的声明就是声称一个函数的名字,只是说明函数的名字,不涉及函数的实现,即没有函数体,所以函数的声明只包括前三个部分。函数定义就是确定一个函数的意义,即让函数具有某项功能,但是这里可不是只有函数体,总要指明这个函数体是那个函数的吧,所以函数的定义包含了一个函数的所有部分。下面以一个名为fun的函数为例来说明函数的声明与定义,fun函数的声明如下:int fun(i原创 2016-11-03 19:30:08 · 218 阅读 · 0 评论 -
语句——if语句中各种值和零值比较
1、布尔变量和零值比较:if(flag)if(!flag)2、整型变量和零值比较:if (value == 0)if (value != 0)3、浮点变量和零值比较:if ( (x>=-EPSINON) && (x4、指针变量和零值比较:if (p == NULL)if ( p != NULL)原创 2016-11-02 09:32:28 · 597 阅读 · 0 评论 -
语句——循环语句的效率
1、在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环的次数。for (col=0; col<5; col++ ){ for (row=0; row<100; row++) { sum = sum + a[row][col]; }}2、如果循环体内存在逻辑判断,并且循环次数很大,宜将原创 2016-11-02 09:46:36 · 280 阅读 · 0 评论 -
数据类型(基本内置类型)——指针和指针孩子(指针变量(指针类型)、数组(构造类型)、字符串、函数指针、空指针等)
一指针1、指针是变量:系统为指针分配内存空间;指针有自己的地址;指针能够存值,是地址;2、指针的类型:指针本身具有的类型:把指针生命语句里的指针名字去掉,剩下的部分就是这个指针类型int *ptr; //指针类型int *char *ptr; //指针类型char *int **ptr;原创 2016-12-19 16:38:02 · 747 阅读 · 0 评论 -
预编译——关于#和##
1、在C语言宏中,#的功能是将器后面的宏参数进行字符串化操作,对它所引用的宏变量通过替换后在其左右各加上一个双引号#define WARN_IF(EXP) \do{ if (EXP) \ fprintf (stderr,"Warning:"#EXP"\n");} \while(0)那么实际使用中会出现下面所示的替换过程:WARN_IF (divider == 0);被原创 2016-11-03 17:04:33 · 1812 阅读 · 0 评论 -
关于继承
1、静态方法(属于整个类)特点:成员属于某个类。对其他成员访问仍可以通过public、protected或private保留字来控制。创建:声明前加保留字static,分配内存(在类声明的外部写出静态属性的类型和名字就行了)。*特别:1)静态成员是在所有对象之间共享的,不能在静态方法里访问非静态元素2)class Pet{public: static int原创 2017-03-07 19:33:33 · 261 阅读 · 0 评论