- 博客(49)
- 资源 (4)
- 收藏
- 关注
原创 通过实例分析C++的拷贝构造函数
对象有时是被自动复制的。自动复制发生在对对象作出以下操作时:(1)通过值传递给函数(2)从函数返回(3)通过初始式初始化为另一个对象(4)作为唯一实参传递给对象的构造函数对象的复制是通过一个名为拷贝构造函数的成员函数来完成的。与构造函数和析构函数一样,如果不编写自己的拷贝构造函数,则编译器为程序员提供一个默认拷贝构造函数。默认拷贝构造函数只是简单的将每个数据成员的值复制给新对象
2014-07-11 20:05:47
938
原创 通过实例分析C++中的析构函数
实例源代码heap_data_member.cpp/************************************* Critter Farm version: 1.0 ------------------------- Heap Data Member Demonstrates an object with a dynamically allocated dat
2014-07-11 20:03:07
2004
转载 adt-bundle-windows-x86 出现的问题
安装AS我下载的是 adt-bundle-windows-x86.zip,包里面有sdk 和 eclipse 开发工具,eclipse已经集合了 ADT插件。出现第一个问题了:打开eclipse时,提示如下:Failed to create the Java Virtual Machine.无法创建Java虚拟机。修改方法: 打开旁边的
2014-07-10 16:21:53
1458
转载 Android搭建开发环境
(一)、工具准备1.下载JDK JDK即Java Development Kit(Java开发工具包),包括JAVA运行环境,基础类库和JAVA工具,是JAVA运行的基础。网址:找到下载JDK的链接:(2013年7月)可能需要“接受许可协议”,见下图:选择“Accept”,下载对应你操作系统的版本。本文档使用Window
2014-07-10 16:13:28
794
转载 C++构造函数中的初始化:C++构造函数后面的冒号
很多的人对中构造函数寝初始化很多的困惑,对冒号后初始化不是太明白,总搞不清楚它们之间的区别,我想把我对这个问题的理解和看法和大家讨论讨论。 在程序中定义变量并初始化的机制中,有两种形式,一个是我们传统的初始化的形式,即赋值运算符赋值,还有一种是括号赋值,如: int a=10; char b='r';//赋值运算符赋值 int a(10);/ ch
2014-07-08 15:21:35
1313
转载 C++:在堆上创建对象,还是在栈上?
如果需要在堆上创建对象,要么使用new运算符,要么使用malloc系列函数。这点没有异议。真正有异议的是下面的代码:Object obj;
2014-07-07 20:54:41
935
转载 C++用new创建对象和不用new创建对象的区别解析
在C++用new创建对象和不用new创建对象是有区别的,不知你是否清楚的了解它们到底有什么样的区别呢?下面小编就用示例来告诉大家吧,需要的朋友可以过来参考下我们都知道C++中有三种创建对象的方法,如下:复制代码代码如下:z#include using namespace std;class A{priv
2014-07-07 20:51:32
1235
转载 C++双冒号::的作用
1、作用域符号::的前面一般是类名称,后面一般是该类的成员名称,C++为例避免不同的类有名称相同的成员而采用作用域的方式进行区分如:A,B表示两个类,在A,B中都有成员member。那么 A::member就表示类A中的成员member B::member就表示类B中的成员member2、全局作用域符号:当全局变量在局部函数中与其中某个变量重名,那么就可
2014-07-01 16:20:57
731
原创 聊聊自己编程入门的事
一直在用Java编程,这学期学习《Unix高级编程》有点忘记C语言程序的库函数了。大学时期莫名其妙的被调剂到计算机科学这个专业,第一次接触电脑。竟然有一门课叫做《C语言》,就是谭浩强编的那本书。我当时真是有点懵,C语言是什么科目。从小到大,直到语、数、外,后来有了生物、化学、物理,我都能很形象的理解。后来就理解为像英语一样的语言,只不过英语是和英国人交流用的,而C语言可以与计算机沟通。当然现在的我
2014-06-29 22:05:38
702
原创 标准C程序设计-格式化输入
4 输入输出操作管理 4.2 格式化输入/** 功能:格式化输入 知识点:%wd、%wf、%wc、%ws 版本:2014/06/19*/#include #include int main(){ int a,b,c; float x,y; double z; char name_1[15], name_2[15], name_3[15]
2014-06-29 17:53:29
840
原创 标准C程序设计-格式化输出
4 输入输出操作管理 4.1格式化输入输出代码示例:/** 功能:格式化输出函数printf 时间: 2014/06/18%d 有符号十进制整数%i 有符号十进制数(与%d相同)%o 无符号八进制整数%x 使用十六进制数字0f的无符号十六进制整数 %X 使用十六进制数字0f的无符号十六进制整数%a 浮
2014-06-29 17:21:50
1043
原创 标准C程序设计(九)
13.6 链表 13.6.1 链表的概念 我们知道,列表是指按序组成的项集。数组就是一种列表。在数组中,其顺序是由其索引隐式的给定的。我们就是使用索引来访问和操作数组元素的。关于数组的一个重要问题是数组的大小必须在开始时就精确的指定。正如前面所指出,这在很多实际的应用中是件困难的事。 一个完全不同的列表表示方法是用结构体表示一个列表成员,它含有指向下一个结构体的“链接”,
2014-06-28 19:44:56
684
原创 标准C程序设计(十)
14 预处理器 14.1 预处理器是一个程序,在源代码通过编译器之前,他先对源代码进行处理。他是在称为预处理器命令行或指令的控制下操作。预处理器指令放在源程序的main函数之前。在源代码通过编译器之前,由预处理器检查所有预处理指令。如果有预处理指令,则采取相应的动作,然后再把源程序交给编译器。表14.1 预处理指令指令作用#define定义一个
2014-06-28 19:37:25
705
原创 标准C程序设计(八)
13 动态内存分配与链表 13.1 动态内存分配C语言要求在编译时指定数组元素的个数。但我们往往无法在最初判断数组大小,可能导致程序的失败或内存空间的浪费。如果能在运行时分配内存空间(即动态内存分配)就可以避免浪费。尽管C语言本身不具备这种能力,但它有4个名为“内存管理函数”的库例程,可以用来在程序运行时分配和释放内存。表 13.1 内存分配函数函数任
2014-06-28 19:26:20
751
原创 标准C程序设计(七)
12 文件管理 12.1 概述 在C语言中,有两种不同的方法来执行文件操作。第一种称为低级I/O,使用UNIX系统调用。第二种指的是高级I/O,使用C语言的标准I/O库函数。表 12.1函数名操作fopen创建一个文件,打开一个已有的文件fclose关闭一个已打开的文件getc从文件中读取一个字符
2014-06-28 17:43:15
963
原创 标准C程序设计(六)
11 指针 11.1 理解指针 在C语言中,指针是一种派生数据类型。它是从C语言的一种基本数据类型创建而来的。指针以内存地址作为其值。由于内存地址表示在计算机内存中保存程序指令和数据的位置,因而可用指针来直接访问和操作存储在内存中的数据。指针相关的基本概念: 计算机的内存地址指的是指针常量(pointer constant)。我们不能修改他们,只能用来存储数
2014-06-28 17:30:01
781
原创 标准C程序设计(五)
10 结构体与共用体 10.1 结构体的定义 数组可以用来表示一组相同类型的数据项。但是,如果要用一个名称来表示不同类型的数据集合,就不能用数组了。C语言支持一种结构化的数据类型,称为结构体。它是一种封装不同类型的数据的机制。结构体的概念类似于其他很多语言中“记录”。 与数组不同,必须首先定义结构体的格式,然后在声明结构体的变量。结构体定义和结构体变量创建过程。如下:
2014-06-28 17:25:23
953
原创 标准C程序设计(四)
9 用户自定义函数 9.1 返回多个值的函数 一般我们使用return语句只能返回一个值,假设我们需要从函数中获得更多的信息该怎么办?在C语言中,我们可以使用参数,不仅接收信息,而且还往调用函数返回信息。用于返回信息的参数称为输出参数。使用地址运算符(&)和间接运算符(*)可以实现。如下:void mathoperation(int x, int y, int *sum,
2014-06-28 17:20:23
775
原创 标准C程序设计(三)
8 字符数组与字符串 8.1 字符串变量的声明与初始化 char city[9] = "New Yourk";char city[9] = {'N', 'e', 'w', 'Y', 'o', 'r', 'k', '\0'};数组city的大小必须为9个的原因,当编译器把字符串符赋给字符数组时,会自动的在字符串的末尾添加空字符('\0')。字符串New York含有8个字符,
2014-06-28 17:08:11
800
原创 标准C程序设计(二)
5 数组 5.1 二维数组的初始化 int table[2][3] = {0, 0, 0, 1, 1, 1};//数组的初始化是逐行进行的int table[2][3] = {{0, 0, 0}, {1, 1, 1}};int table[2][3] = { {0, 0, 0}, {1, 1, 1}};//如果数组的所有元素都显示的进行了
2014-06-28 17:02:44
658
转载 标准C程序设计—define和typedef区别
代码示例:/** 版本: 2014/06/18 功能: 温度转换问题 关键: define和typedef的使用*/#include #include //符号常量 #define F_LOW 0#define F_MAX 250#define STEP 25int main(){ typedef float REAL; //类型定义 R
2014-06-28 16:40:39
828
转载 回车符和换行符区别【Windows和Linux换行符的区别】
回车符号和换行符号产生背景 关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
2014-06-26 15:42:45
1101
转载 控制台程序的中文输出乱码问题,printf,wprintf与setlocale
#include #include int main(void) { char str[] = "中文"; wchar_t wstr[] = L"中文"; printf("1:%s\n", str); wprintf(L"2:%s\n", wstr); return 0;}
2014-06-18 19:56:33
13861
2
转载 详解C语言可变参数 va_list和_vsnprintf及printf实现
C语言的变长参数在平时做开发时很少会在自己设计的接口中用到,但我们最常用的接口printf就是使用的变长参数接口,在感受到printf强大的魅力的同时,是否想挖据一下到底printf是如何实现的呢?这里我们一起来挖掘一下C语言变长参数的奥秘。先考虑这样一个问题:如果我们不使用C标准库(libc)中提供的Facilities,我们自己是否可以实现拥有变长参数的函数呢?我们不妨试试。一
2014-06-18 10:49:36
1131
转载 github常见操作和常见错误!错误提示:fatal: remote origin already exists.
如果输入$ git remote add origin git@github.com:djqiang(github帐号名)/gitdemo(项目名).git 提示出错信息:fatal: remote origin already exists. 解决办法如下: 1、先输入$ git remote rm origin 2、再输入$ git r
2014-06-16 10:31:57
731
转载 【排序算法】选择排序(C++实现)
选择排序算法就是每一趟从待排序的记录中选出关键字最小(最大)的记录,顺序放在已排好序的子文件的最后(最前),直到全部记录排序完毕。常见的选择排序有直接选择排序(Selection Sort),堆排序(Heap Sort),平滑排序(Smooth Sort),笛卡尔树排序(Cartesian Sort),锦标赛排序(Tournament Sort),循环排序(Cycle)。下面介绍前两种:(
2014-06-13 20:06:06
922
转载 FreeMarker入门
jar包地址:http://www.freemarker.org/freemarkerdownload.htmlFreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。Demo:
2014-04-28 16:13:29
582
转载 对象的串行化(Serialization)
一、串行化的概念和目的 1.什么是串行化 对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization) 。串行化的主要任
2014-04-27 20:30:13
691
原创 Java中null和""的疑问
比较null和""的不同String str = null是指str这个变量指向空对象;而“”是一个包含空字符的字符串对象。str == str1返回false,因为“”和null不在同一内存地址空间,也就是说,着两个变量没有指向同一对象。"null".equals(str)返回false。因为空串的值不是“null”。空串str1是可以调用String对象的方法的,比如str1.le
2014-04-10 19:47:05
972
原创 Linux内核模块-剖析内核模块(六)
1.内核模块对象 LKM 只不过是一个特殊的可执行可链接格式(Executable and Linkable Format,ELF)对象文件。通常,必须链接对象文件才能在可执行文件中解析它们的符号和结果。由于必须将 LKM 加载到内核后 LKM 才能解析符号,所以 LKM 仍然是一个 ELF 对象。您可以在 LKM 上使用标准对象工具(在 2.6 版本中,内核对象带有后缀 .ko,)。例
2014-04-06 20:07:03
854
原创 Linux内核模块-导出符号表(五)
一、简介 如果一个模块需要向其他模块导出符号(方法或全局变量),需要使用: EXPORT_SYMBOL(name); EXPORT_SYMBOL_GPL(name); 注意:符号必须在模块文件的全局部分导出,不能再函数部分导出。 更多信息可参考 文件 显示所有导出的符号
2014-04-06 20:03:08
4122
原创 Linux内核模块-printk函数(四)
1.先看程序的头文件(参考hello.c) # include /* Need by all modules */# include /* Need for HERN_INFO */# include /* Need for the macros */2.解析printk函数# include /* Need for HERN_INFO */
2014-04-06 19:55:46
2076
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人