
C/C++/Java
文章平均质量分 82
ayanwan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
字符串处理函数的实现及注意事项
细节:1、一定要对地址要加非0断言。assert宏的原型定义在中,原型定义:#include void assert( int expression ); assert的作用是计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。2、实现链式操作,返回目的地址原创 2015-09-04 13:44:36 · 1446 阅读 · 0 评论 -
C/C++编程细节(二)——堆栈、数组、指针
1、静态成员与类A、静态成员属于类,而不是属于某个特定的对象,它是由该类的所有对象共享的,因此不能在类的构造方法中初始化B,静态成员属于该类所有对象公有,可以被类对象调用C,静态成员收private的限制D,静态成员属于类和该类的所有对象,可以用类名直接调用2、引用引用为对象起了另外的一个名字,该对象是已经存在的对象,引用必须初始化,有类型原创 2015-08-31 23:36:38 · 1941 阅读 · 0 评论 -
指针与引用
一、指针 指针指向一块内存,它的内容是所指内存的地址。所以说,指针就是地址。1、指针的声明及初始化 看下例子int ival = 1024;int *pi = 0; 正确,0表示空地址int *pi0 = 5; 错误,5是具体数字,不能表示地址int *pil; 正确,声明,并没有初始化*pil = 5; 正确,pil地址里的数字是原创 2015-07-13 00:06:31 · 1132 阅读 · 0 评论 -
C/C++实现动态数组
C语言中,数组长度必须在创建数组时指定,并且只能是一个常数,不能是变量。一旦定义了一个数组,系统将为它分配一个固定大小的空间,以后不能改变,称为静态数组。静态数组存放在:全局变量区、栈。 动态数组,可以随程序需要而重新指定大小。动态数组的内存空间是从堆(heap)上分配(即动态分配)的。是通过执行代码而为其分配存储空间。当程序执行到这些语句时,才为其分配。程序员自己负责释原创 2015-09-06 12:49:41 · 2798 阅读 · 0 评论 -
C库文件操作函数详解
C库文件操作标准库函数汇总: 文件的打开操作 fopen 打开一个文件 文件的关闭操作 fclose 关闭一个文件 文件的读写操作 fgetc 从文件中读取一个字符 fputc 写一个字符到文件中去原创 2015-10-05 22:41:35 · 3042 阅读 · 1 评论 -
文件操作——C库调用与Linux系统调用区别
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思,面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api,采用这样的方式有很多种原因,第一:双缓冲技术的实现。第二,可移植性。第三,底层调用本身的一些性能方面的缺陷。第四:让api原创 2013-10-09 21:05:46 · 2507 阅读 · 0 评论 -
C/C++重要知识点总结
一、程序的在内存中的存储空间(1)代码区:存放二进制代码的区域;(2)文本常量区:a、字符串;b、const全局变量,而const局部变量存放在栈中;(3)全局变量区(静态变量区):a、data(初始化区):存放已经初始化的的全局变量,static变量; b、b原创 2015-09-11 23:48:23 · 3206 阅读 · 0 评论 -
一个例子说明虚函数
本例子说明以下问题:虚函数的定义,调用(外部函数的指针或引用,成员函数),构造函数和析构函数中调用虚函数,虚析构函数赋值兼容,构造函数的重载,构造函数的初始化列表见代码:#includeusing namespace std;class Base{ public: Base():m(1),n(m+1){Display();} //构造函数中调用虚函数时自己原创 2015-08-19 10:37:05 · 1294 阅读 · 0 评论 -
struct、union、enum and sizeof
struct 1、结构体和数组的区别:可以再结构体里声明数组;结构体变量可以相互赋值,而数组不行。2、struct与class的区别:class的成员访问权限默认是private,而struct成员的是public。3、结构体的定义:(1)可递归。结构体内部可以使用指针指向自己。例如,链表。(2)可嵌套。结构体内部可以包含其他的结构体。4、结构体中的位域。在存储信息时,原创 2015-07-11 11:02:23 · 1030 阅读 · 0 评论 -
变量和函数的存储类别
在c语言中,每个变量和函数有两个属性:数据类型和数据的存储类别。从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。静态存储方式:是指在程序运行期间分配固定的存储空间的方式。动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。用户存储空间可以分为三个部分:原创 2013-10-07 10:19:31 · 1451 阅读 · 0 评论 -
面对对象的语言的三大特征
1:封装 封装是 JAVA 面向对象的特点的表现,封装是一种信息隐蔽技术。它有两个含义:即把对象的全部属性和全部服务结合在一起, 形成一个不可分割的独立单位; 以及尽可能隐藏对象的内部结构。 也就是说,如果我们使用了封装技术的话,别人就只能用我们做出来的东西而看不见我们做的这个东西的内部结构了。 封装的功能- 隐藏对象的实现细节- 迫使用户去使用一个界面原创 2014-02-21 15:45:35 · 2870 阅读 · 0 评论 -
C与C++语法总结
C++编程思想:对象+消息C编程思想:数据结构+算法一、封装(类)1、访问控制2、成员函数3、运算符重载二、继承1、基类、派生类2、继承种类:单继承、多继承3、派生类的访问控制(1)公有继承 赋值兼容a、派生类的对象可以赋值给基类b、派生类的对象可以赋值给基类的原创 2015-08-08 10:19:13 · 1188 阅读 · 0 评论 -
bcd与hex转换、以及编码格式
1、BCD码(1)压缩BCD:4位二进制数表示一个十进制数,例如: 0001 0010 --> 12 0001 0011 --> 13(2)BCD:8位二进制数表示一个十进制数,高四位为0; 0000 0001 0000 0010 --> 12 0000 0原创 2017-01-25 10:05:36 · 21409 阅读 · 0 评论 -
面向对象编程
实际上,面向对象的技术是在面向过程的基础上,为程序设计提供了更多的手段和方法。两种技术不是非此既彼的对立关系,不能说面向对象的技术替代了面向过程,如果用面向对象的技术就要把一个软件任务划分成两个层次,第一个层次是做什么,第二层次是怎么做。那么面向对象技术是解决第一个层次的问题,面向过程则是解决第二个层次的问题,只有在两个层次上的任务都完成之后,才能说完成了整个程序设计任务。也就是说这两种程序设计方原创 2016-10-27 00:54:21 · 1254 阅读 · 0 评论 -
Java 语法总结
一、java语法基础:1、关键字:其实就是某种语言赋予了特殊含义的单词。 保留字:其实就是还没有赋予特殊含义,但是准备日后要使用过的单词。2、标示符:其实就是在程序中自定义的名词。比如类名,变量名,函数名。包含 0-9、a-z、$、_ ; 注意:1)数字不可以开头。2)不可以使用关键字。3、常量:是在程序中的不会变化的数据。4、变量:其实原创 2016-08-14 18:57:40 · 3155 阅读 · 2 评论 -
java监听器的原理与实现
监听器模型涉及以下三个对象,模型图如下:(1)事件:用户对组件的一个操作,称之为一个事件(2)事件源:发生事件的组件就是事件源(3)事件监听器(处理器):监听并负责处理事件的方法执行顺序如下:1、给事件源注册监听器2、组件接受外部作用,也就是事件被触发3、组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器4、事件处理器启动,并执行相关的代码来处原创 2016-06-12 00:45:57 · 48170 阅读 · 5 评论 -
java接口回调、同步回调、异步回调
一、回调 回调用于层间协作,上层将本层函数安装在下层,这个函数就是回调,而下层在一定条件下触发回调。 例如作为一个驱动,是一个底层,他在收到一个数据时,除了完成本层的处理工作外,还将进行回调,将这个数据交给上层应用层来做进一步处理,这在分层的数据通信中很普遍。 其实回调和API非常接近,他们的共性都是跨层调用的函数。但区别是API是低层提供给高原创 2016-05-15 16:20:37 · 8903 阅读 · 0 评论 -
指针全解析
C语言中,指针式一个难点。主要表现在两个方面:1、各种类型的指针众数繁多。2、各种类型的指针如何应用。但是由于,指针有着运算速度快的优势,如果你进行操作系统,关注操作系统的内核(以linux为例),你就会发现操作系统来说更多运用到指针,究其原因,一个很重要的原因就是处理速度快。那么,今天,就把C语言的指针做个总结。第一、 指针和变量 其表现形式只有一种:变量指针常数是不能直接幅值给指原创 2015-08-21 09:36:37 · 2163 阅读 · 0 评论 -
C/C++编程细节(三)——类、继承、模板、运算符重载
1、类、派生类 C++中类的概念很重要,重要到什么程度呢?把class/struct看成和main同一个等级,为什么这么说呢?因为,C++中不允许全局变量独立于类外,所以,在一个C++文件中,除了头文件,就是class和main了。当然这只是其中一个原因。另外,类可以看做一种类型,和C中struct类似的一种类型。原创 2015-09-02 00:17:57 · 1743 阅读 · 0 评论 -
String类的实现
String类的实现里要注意一下几点:1、运算符重载: (1) 成员函数运算符重载:[]、=、()必须重载为成员函数 友元函数运算符重载:《,》必须重载为友元函数 函数参数:要注意使用引用 (2)赋值运算符重载 赋值运算符的返回值和参数都是引用,返回值为引用的目的是:返回左值的引用原创 2015-09-04 19:59:21 · 637 阅读 · 0 评论 -
数组与指针
1、指针运算 合法的指针运算有:指针与整数的加减(包含指针的自增和自减)、同类型的两指针相减、同类型指针间的比较。【指针与整数的加减】 指针加上一个整数的结果是另一个指针。因为指针就是地址,所以,指针加上一个整数的结果就是另一个地址。那么,它指向哪里呢?这个指针所指向的类型有关。我们知道,char 1 byte 8 bit原创 2015-07-09 22:43:02 · 838 阅读 · 0 评论 -
sizeof、strlen
一、sizeof sizeof(...)是运算符,sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。 功能是:获得保证能容纳实现所建立的最大对象的字节大小。 由于在编译时计算,因此sizeof不能用来返回动态分配的内存空间原创 2015-07-10 14:35:50 · 769 阅读 · 0 评论 -
C/C++运算符及其优先级
1、自增自减(1)前置运算:”先变后用“ 如++i; 后置运算:”先用后变“ 如i--; 例如:int i = 5;y1 = ++i; y2 = i++;结果:y1 = 6;y2=6;i=7.(2)前置和后置还有一个区别:前置可以用在等号的两边;而后置只能位于等号的右边。 这是因为前置返回操作数本身原创 2015-07-14 22:07:32 · 2155 阅读 · 1 评论 -
模板
模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。1、 函数模板的写法函数模板的一般形式如下:Template 返回类型 函数名(形参表){//函数定义体 }说明: (1)template是一个声明模板的关键字,表示声明一个模板原创 2015-08-19 16:11:39 · 646 阅读 · 0 评论 -
C/C++编程细节(一)——你未必知道
1、printf函数的参数从右向左运算char s[] = "123", *p; p = s; printf("%c%c%c\n", *p++, *p++, *p++);结果:3212、 x = x&(x-1):每运算一次,就导致二进制x中的1减少一个。int miracle(unsigned int n){ int m= n==0 ? 0:1;原创 2015-08-21 23:41:21 · 1335 阅读 · 0 评论 -
字符、字符串、数组
1、字符数组的定义与初始化字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};即把10个字符分别赋给str[0]到str[9]10个元素如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那原创 2015-08-21 15:41:18 · 1104 阅读 · 0 评论 -
C字符串处理函数
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长原创 2015-07-16 13:48:41 · 1127 阅读 · 0 评论 -
Java多线程
Java线程是Thread类的对象,可以使用两种方式来创建多线程的Java应用程序,如下所示:(1)实现Runnable接口(2)继承Thread类 两种方式,都要在线程类的内部实现run()方法,然后new一个Thread,最后.start()。1、Runnable接口的实现package runnable;public class RunnableTes原创 2016-05-28 09:28:36 · 545 阅读 · 0 评论