xjbclz
有多年APP与手机软件开发和管理工作经验,出版了两本书:《Android APP开发实战》和《App Inventor2定制与二次开发》
展开
-
C++中建立对象间消息连接的系统方法
用过C++进行过面向对象程序设计的用户都知道,程序中的对象很少单独存在。不考虑对象间的相互作用几乎是不可能的。所以,标识对象间的关系或建立对象间的消息连接是面向对象程序设计的一项重要任务。本文着重从C++程序设计的角度,提出一种建立对象间消息连接的实用方法。如果你想详细了解面向对象程序设计技术,请参阅有关专著。 大家都知道对象是数据和方法的封装体。在C++中,它们分别表现为数据成员和成员转载 2016-06-25 14:14:48 · 1029 阅读 · 0 评论 -
C++中的结构体与sizeof
影响结构体的sizeof的因素:1) 不同的系统(如32位或16位系统):不同的系统下int等类型的长度是变化 的,如对于16位系统,int的长度(字节)为2,而在32位系统下,int的长度为4;因此如果结构体中有int等类型的成员,在不同的系统中得到的sizeof值是不相同的。2) 编译器设置中的对齐方式:对齐方式的作用常常会让我们对结构体的sizeof值感到惊讶。转载 2016-06-25 14:15:40 · 842 阅读 · 0 评论 -
C++非面向对象的特征
1.注释行在C语言中,我们用“/*……*/”进行注释,如/*This is a test*/在C++中,保留了这种注释方式,但是C++中新加入了一种更有效的注释方式,该注释以“//”开头,直到行尾。“//”用在单行注释特别合适。如:x=y+z; // This is a comment2.新的I/O流在C中如果用下面的输入方式就会出错,C编译器检查不出这种错误。如scanf(“转载 2016-06-25 14:16:15 · 364 阅读 · 0 评论 -
C++高质量编程点滴
一、你需要一个函数将一个数组赋值为等差数列,并将会在函数的外部使用它。 不合理: int *GetArray( int n ) { int *p = new int[n]; for ( int i = 0; i { p[i] = i; } return p; } 合理:转载 2016-06-25 14:17:05 · 371 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C转载 2016-06-25 14:18:39 · 273 阅读 · 0 评论 -
C 编程最佳实践
简介本文是为了满足开发人员的需要而写的。我们总结了一套指南,无论作为开发人员还是顾问,这些指南多年来一直都很好地指导着我们,我们把它们作为建议提供给您,希望对您的工作有所帮助。您也许不赞同其中的某些指南,但我们希望您会喜欢其中的一些并在您的编程或移植项目中使用它们。风格与指南 使用一种使代码具有可读性和一致性的源代码风格。如果没有团队代码风格或自己的风格,您可以使用与大多数转载 2016-06-25 18:15:45 · 211 阅读 · 0 评论 -
C++中动态内存分配引发问题的解决方案
首先,大家要知道,C++类有以下这些极为重要的函数: 一:复制构造函数。 二:赋值函数。 我们先来讲复制构造函数。什么是复制构造函数呢?比如,我们可以写下这样的代码:Wrong test1(test2);这是进行初始化。我们知道,初始化对象要用构造函数。可这儿呢?按理说,应该有声明为这样的构造函数:Wrong(const Wrong &);可是,我们并没有定义这个转载 2016-06-26 11:08:38 · 768 阅读 · 0 评论 -
利用管道进行进程的通信示例
这里用到了 pipe 管道函数: int pipe(int file_descriptor[2]); 函数 pipe 填充的两个整数的含义是两个文件描述符,任何向 file_descriptor[1] 写入的数据,可以从 file_descriptor[0] 中读取,并且写入的数据符合先入先出的规则. 例 pipe.c: #include #include #inc转载 2016-06-26 11:09:14 · 522 阅读 · 0 评论 -
c++中强制类型转换操作符小结
标准c++中主要有四种强制转换类型运算符:const_cast,reinterpret_cast,static_cast,dynamic_cast等等。1)static_cast(a)将地址a转换成类型T,T和a必须是指针、引用、算术类型或枚举类型。表达式static_cast ( a ) a的值转换为模板中指定的类型T。在运行时转换过程中,不进行类型检查来确保转换的安全性。转载 2016-06-26 11:09:51 · 200 阅读 · 0 评论 -
IPC和管道简介
1 Interprocess Communication (IPC)和管道Pipes 在UNIX的内核环境中,要解决的一个首要问题是:如何控制和处理不同进程之间的通信和数据交换。 本章中我们将通过研究一个简单的实例,看看在同一台机器的UNIX环境下多个进程是如何运行和被我们控制的 (使用fork()方法)。 能够实现进程间通信的方法有: · Pipes转载 2016-06-26 11:13:18 · 310 阅读 · 0 评论 -
C程序员之终极标靶
优化--C程序员之终极标靶一个用户往往把他的生命中大部分时间用来等待计算机输出结果,为了减少这个等待时间,用户不得不采购更快的计算机,增加内存或更换整个网络.开发者有责任尽量避免他的程序耗费昂贵的资源,为用户挽回宝贵的时间和金钱.--原作者--------------------------------------------------------------------转载 2016-06-26 11:14:08 · 554 阅读 · 0 评论 -
关于字符集的专题知识 UTF-8 GB2312 UNICODE
一 预备知识 1,字符:字符是抽象的最小文本单位。它没有固定的形状(可能是一个字形),而且没有值。“A”是一个字符,“€”(德国、法国和许多其他欧洲国家通用货币的标志)也是一个字符。“中”“国”这是两个汉字字符。字符仅仅代表一个符号,没有任何实际值的意义。 2,字符集:字符集是字符的集合。例如,汉字字符是中国人最先发明的字符,在中文、日文、韩文和越南文的书写中使用。这也说明了字符和字符集之转载 2016-06-27 21:43:11 · 448 阅读 · 0 评论 -
(转)字节对齐和C/C++函数调用方式学习总结
前言:《***软件编程规范》中提到:“在定义结构数据类型时,为了提高系统效率,要注意4字节对齐原则……”。本文解释x86上字节对齐的机制,其他架构读者可自行试验。同时,本文对C/C++的函数调用方式进行了讨论。BTW想了几天要在休息时间写个总结但是直到今天18日才动手。写出来应该对自己还是有帮助的。也许还有一点点参考价值吧。由于本人水平所限,有不正确之处,欢迎大家提出。感谢几位转载 2016-06-27 21:47:59 · 841 阅读 · 0 评论 -
(转)指针为初学者服务
为初学者服务。这是我的帖子的宗旨。我也是个初学者(强调了无数遍了),我以我的理解把初学者觉得难懂的东西用浅显的语言写出来。由于小学时语文 没学好,所以竭尽全力也未必能达到这个目的。尽力而为吧。 指针是c和c++中的难点和重点。我只精通dos下的basic。c语言的其它各种特性,在basic中都有类似的东西。只有指针,是baisc所不具备的。指针是c的灵魂 。 我不想重复大多数书上说得很清楚转载 2016-06-27 21:48:44 · 185 阅读 · 0 评论 -
(转)通过地址获取对应的源代码信息
你写了一个程序,很开心地把它发布给用户。用户满心欢喜地运行它,突然Windows弹出了一个熟悉的窗口:Application Error: The instruction at “0x00411a28” referenced memory at “0x12345678”. The memory could not be “written”. Click _disibledevent转载 2016-06-27 21:50:01 · 5879 阅读 · 0 评论 -
使用MAP文件快速定位程序崩溃代码行
程序员,平时最担心见到的事情就是程序发生了崩溃,无论是指针越界还是非法操作,都将给我们的应用系统造成巨大的损失。但在一个大型系统的测试过程中,初期出现程序崩溃似乎成了不可避免的事。其实测试中出现程序崩溃并不可怕,反而是测试的成功。我们更为关心的是程序中的哪一行导致了系统崩溃,这样我们才能有针对性的进行改正。 在VC中,我们可以利用出现程序崩溃时VC的自动跳转,定位到出错代码行。但在大量的压力转载 2016-06-27 21:50:43 · 1025 阅读 · 0 评论 -
堆:欢乐和痛苦
您是否是动态分配的 C/C++ 对象忠实且幸运的用户?您是否在模块间的往返通信中频繁地使用了“自动化”?您的程序是否因堆分配而运行起来很慢?不仅仅您遇到这样的问题。几乎所有项目迟早都会遇到堆问题。大家都想说,“我的代码真正好,只是堆太慢”。那只是部分正确。更深入理解堆及其用法、以及会发生什么问题,是很有用的。什么是堆?(如果您已经知道什么是堆,可以跳到“什么是常见的堆性能问题?”部转载 2016-06-27 21:51:37 · 285 阅读 · 0 评论 -
编写优质无错C程序秘诀!《经验谈》
首先,当发现错误时,要不断就以下两个问题追问自己的结果:1、怎样才能自动地查出这个错误?2、怎样才能避免这个错误?关于错误:错误可以分为两类:1、开发某一功能时产生的错误。2、程序员认为该功能已经开发完成之后仍然遗留在代码中的错误。第一种错误好解决,可以把编译器可以设置的警告等级开关打开,以及语法检查来排除;逻辑错误也可以使用跟踪手段来排除。跟踪逻辑错误就相对麻转载 2016-06-28 21:42:02 · 894 阅读 · 0 评论 -
Windows下return,exit和ExitProcess的区别和分析- -
通常,我们为了使自己的程序结束,会在主函数中使用return或调用exit()。在windows下还有ExitProcess()和TerminateProcess()等函数。本文的目的是比较以上几种结束程序的方式的区别,并分析其原理。首先我们用一个例子来说明几种结束方式的区别。测试环境为Windows XP HOME SP2,编译器为Visual Studio.net 2003转载 2016-06-28 21:42:58 · 2722 阅读 · 0 评论 -
(转)volatile用法的相关文章
__asm {mov dword ptr [ebp-4], 50h}//下面汇编语句的作用就是改变内存中i的值,但是又不让编译器知道,来隐式的修改了变量。int b = i;printf("i= %d\n",b);}然后,在调试版本(debug)模式运行程序,输出结果如下:i = 10i = 80然后,在release版本模式运行程序,输出结果如下:转载 2016-06-28 21:44:05 · 292 阅读 · 0 评论 -
(转)C程序设计的常用算法
算法(Algorithm):计算机解题的基本思想方法和步骤。算法的描述:是对要解决一个问题或要完成一项任务所采取的方法和步骤的描述,包括需要什么数据(输入什么数据、输出什么结果)、采用什么结构、使用什么语句以及如何安排这些语句等。通常使用自然语言、结构化流程图、伪代码等来描述算法。 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定循环变量的初值、终值转载 2016-06-28 21:44:42 · 349 阅读 · 0 评论 -
(转)C/C++面试题
1.求下面函数的返回值(微软)int func(x) { int countx = 0; while(x) { countx ++; x = x&(x-1); } return countx; } 假定x = 9999。答案:8思路:将x转化为2进制,看含有的1的个转载 2016-06-28 21:45:48 · 292 阅读 · 0 评论 -
(转)C++知识点
一、#include “filename.h”和#include 的区别#include “filename.h”是指编译器将从当前工作目录上开始查找此文件#include 是指编译器将从标准库目录中开始查找此文件 二、头文件的作用 加强安全检测 通过头文件可能方便地调用库功能,而不必关心其实现方式 三、* , &修饰符的转载 2016-06-28 21:46:16 · 229 阅读 · 0 评论 -
(转)C++ 字符串类型转换为其他字符串
本主题演示如何将各种 C++ 字符串类型转换为其他字符串。可以转换的字符串类型包括 char *、wchar_t*、_bstr_t、CComBSTR、CString、basic_string和 System.String。在所有情况下,在将字符串转换为新类型时,都会创建字符串的副本。对新字符串进行的任何更改都不会影响原始字符串,反之亦然。从 char * 转换示例说明转载 2016-06-28 21:47:16 · 593 阅读 · 0 评论 -
如何编写异常安全的C++代码
关于C++中异常的争论何其多也,但往往是一些不合事实的误解。异常曾经是一个难以用好的语言特性,幸运的是,随着C++社区经验的积累,今天我们已经有足够的知识轻松编写异常安全的代码了,而且编写异常安全的代码一般也不会对性能造成影响。 使用异常还是返回错误码?这是个争论不休的话题。大家一定听说过这样的说法:只有在真正异常的时候,才使用异常。那什么是“真正异常的时候”?在回答这个问题以前,让我们先看转载 2016-06-28 21:47:58 · 306 阅读 · 0 评论 -
解读VC++编程中的文件操作API和CFile类
在VC++编程中,操作文件的方法主要有两种:利用API函数和MFC的CFile类。微软在其中封装了文件的一般操作,下面我就介绍一下如何利用这两种方法实现文件操作。 1.创建或打开一个文件 用API函数CreateFile可打开和创建文件、管道、邮槽、通信服务、设备以及控制台,但是在此时只是介绍用这个函数怎么实现创建和打开一个文件。HANDLE CreateFile(转载 2016-06-28 21:48:47 · 1963 阅读 · 0 评论 -
汉字拼音声母计算类
using System; using System.Text; namespace ConcreteMIS.Common.Chinese { /// /// 汉字拼音声母计算类 /// Write by WangZhenlong at 2003/11/29 /转载 2016-06-28 21:50:17 · 458 阅读 · 0 评论 -
字符串转换系列五:BSTR、char*和CString转换
五、BSTR、char*和CString转换 (1) char*转换成CString 若将char*转换成CString,除了直接赋值外,还可使用CString::Format进行。例如:char chArray[] = "This is a test";char * p = "This is a test"; 或LPSTR p = "This转载 2016-06-28 21:51:21 · 303 阅读 · 0 评论 -
Vc调试入门
概述调试是一个程序员最基本的技能,其重要性甚至超过学习一门语言。不会调试的程序员就意味着他即使会一门语言,却不能编制出任何好的软件。这里我简要的根据自己的经验列出调试中比较常用的技巧,希望对大家有用。本文约定,在选择菜单时,通过/表示分级菜单,例如File/Open表示顶级菜单File的子菜单Open。 设置为了调试一个程序,首先必须使程序中包含调试信息。一般情况下,一个转载 2016-06-28 21:52:03 · 229 阅读 · 0 评论 -
VC环境下检查内存泄漏memory leak的方法
通过改写delete new方法,我们可以记录内存分配的地址,数量。因此,也就可以知道哪此内存在程序结束后没有释放。将如下代码改存放为trace.cpp ,将trace.cpp放入要检测的工程。运行Debug调试程序,在Debug的输出里会有提示信息。/*****************************************************************转载 2016-06-28 21:52:45 · 1481 阅读 · 0 评论 -
Const用法小结
Const用法小结 关于C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,参考了康建东兄的const使用详解一文,对其中进行了一些补充,写下了本文。1. const常量,如const int max = 100; 优点:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查转载 2016-06-28 21:53:28 · 227 阅读 · 0 评论 -
vc dll编程
在我们实际用软件时,经常可看到许多动态连接库。动态连接库有其自身的优点如节省内存、支持多语种等功能,而且,当DLL中的函数改变后,只要不是参数的改变调用起的函数并不需要重新编译。这在编程时十分有用。至于其他妙处,各位在电脑杂志、书籍中都能看到,我这里再说就是废话了.这次小弟我所要讲的是如何在VC5.0中如何做自己的Win32 DLLs,各位要做自己的动态连接库,首先要知道DLL转载 2016-06-28 21:54:04 · 320 阅读 · 0 评论 -
C/C++头文件一览
C、传统 C++#include //设定插入点#include //字符处理#include //定义错误码#include //浮点数处理#include //文件输入/输出#include //参数化输入/输出#include //数据流输入/输出#include //定义各种数据类型最值转载 2016-06-28 21:54:38 · 195 阅读 · 0 评论 -
C++编程规范---C++/C代码审查表
文件结构重要性审查项结论头文件和定义文件的名称是否合理?头文件和定义文件的目录结构是否合理?版权和版本声明是否完整?重要头文件是否使用了 ifndef/define/endif 预处理块?头文件中是否只存放“转载 2016-06-29 22:46:11 · 911 阅读 · 0 评论 -
两种VC操纵EXCEL的方法
第一种方法,简单的,用CDatabase实现. 程序是一个基于对话框的,步骤: A,为了避免代码重复,设置下面几个全局变量(类范围的),要引入头文件 CDatabase m_db; //数据库 CString m_dbdriver; //要生成的EXC转载 2016-06-29 22:46:54 · 3653 阅读 · 0 评论 -
大内高手—栈/堆
大内高手—栈/堆l 栈栈作为一种基本数据结构,我并不感到惊讶,用来实现函数调用,这也司空见惯的作法。直到我试图找到另外一种方式实现递归操作时,我才感叹于它的巧妙。要实现递归操作,不用栈不是不可能,而是找不出比它更优雅的方式。尽管大多数编译器在优化时,会把常用的参数或者局部变量放入寄存器中。但用栈来管理函数调用时的临时变量(局部变量和参数)是通用做法,前者转载 2016-06-29 22:47:45 · 261 阅读 · 0 评论 -
用C语言实现常见的三种中文内码转换
用C语言实现常见的三种中文内码转换 常见的中文内码一般有GB2312(简体中文),GBK和台湾那边用的BIG5(繁体中文),有时候看一些台湾编程论坛里的资料,都是乱码,如果在IE中浏览,则要求安装繁体字库的支持。网上也有很多中文内码的转换工具,什么专家,大师,巨匠之类所有光辉灿烂的名字都被使用了,但是在自己的程序中集成这些功能岂不是更好。以前曾广泛流传过使用码表来转换中文内码的Code,转载 2016-06-29 22:48:44 · 6777 阅读 · 0 评论 -
一个非常不错的串口程序
//PC读MCU指令结构:(中断方式,ASCII码表示) //帧: 帧头标志|帧类型|器件地址|启始地址|长度n|效验和|帧尾标志 //值: ’n’ ’y’| ’r’ | 0x01 | x | x | x |0x13 0x10 //字节数: 2 | 1 | 1 | 1 | 1 | 1 | 2 //求转载 2016-06-29 22:49:48 · 3855 阅读 · 0 评论 -
学习指针不可少的好文章
为初学者服务。这是我的帖子的宗旨。我也是个初学者(强调了无数遍了) ,我以我的理解把初学者觉得难懂的东西用浅显的语言写出来。由于小学时语文 没学好,所以竭尽全力也未必能达到这个目的。尽力而为吧。 指针是c和c++中的难点和重点。我只精通dos下的basic。c语言的其它各种特 性,在basic中都有类似的东西。只有指针,是baisc所不具备的。指针是c的灵魂 。 我不想重复大多数书上说得很转载 2016-06-29 22:50:41 · 247 阅读 · 0 评论 -
匈牙利命名法的来历和介绍
document.write(body_15031); 匈牙利命名法是一种编程时的命名规范。基本原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。命名要基于容易记忆容易理解的原则。保证名字的连贯性是非常重要的。举例来说,表单的名称为form,那么在匈牙利命名法中可以简写为frm,则当表单变量名称为Switchboard时,变量全称应转载 2016-06-29 22:51:22 · 976 阅读 · 0 评论