编程技巧 - 文章列表

  • C++注册表操作范例

     1.读注册表// 读取注册表CString ReadRegisteTable(CString root,CString path, CString key){HKEY hAppKey;LPCTSTR WINDS_SERVICE_REGISTRY_KEY=path;LPCTSTR DATA_FILE_SUB_KEY=key;char szDataFile[80];if(root=="HKEY_LOCAL_MACHINE"){if (ERROR_SUCCESS == RegOpenKeyEx (HKEY_LOCAL_MACHINE,WINDS_SERVICE_REGISTRY

  • c++指针的常见问题-返回局部变量

     函数返回指针。本来就是一个比较容易出问题的操作。在霍顿的《VC++ 入门经典》一书中,给出了一个很有代表性的例子,如下:  // Ex5_11.cpp  #include <iostream>  using std::cout;  using std::endl;  double* treble(double); // Function prototype  int main(void)  {  double num = 5.0; // Test value  double* ptr = 0; // Pointer to returned value  ptr = treble(

  • 二叉树应用解决计算表达式的问题

     昨天晚上,我花了大把的时间研究里面二叉树应用解决计算表达式的问题,一直就没理解,主要是觉得是不是自己错了,又懒,不愿意自己把代码敲到电脑里看看,结果浪费了很多时间。所以还是提醒大家,代码这种东西,有什么好多看的,觉得他错了就自己敲到电脑里去看看!其实也没错太多,就是少了一些东西,导致原代码里的括号完全没有意义,也就是说,书中的代码虽然考虑到了计算表达式中的括号,却什么都没有做,而这其实只要稍稍改进:加一个flag存储上次读到的char,如果是‘)’的话,就要把左式当成运算数来计算。  好了,把正确的代码贴在下面:  #include <iostream>  using names

  • c++基础教程-static的全部用法

    c++基础教程-static的全部用法要理解static,就必须要先理解另一个与之相对的关键字,很多人可能都还不知道有这个关键字,那就是auto,其实我们通常声明的不用static修饰的变量,都是auto的,因为它是默认的,就象short和long总是默认为int一样;我们通常声明一个变量:int a;string s;  其实就是:auto int a;auto string s;而static变量的声明是:static int a;static string s;这样似乎可以更有利于理解auto和static是一对成对的关键字吧,就像private,protected,public一样;对

  • c++基础-表达式的使用

    本篇是此系列的开头,在学英语时,第一时间学的是字母,其是英语的基础。同样,在C++中,所有的代码都是通过标识符(Identifier)、表达式(Expression)和语句(Statement)及一些必要的符号(如大括号等)组成,在此先说明何谓标识符。  标识符  标识符是一个字母序列,由大小写英文字母、下划线及数字组成,用于标识。标识就是标出并识别,也就是名字。其可以作为后面将提到的变量或者函数或者类等的名字,也就是说用来标识某个特定的变量或者函数或者类等C++中的元素。  比如:abc就是一个合法的标识符,即abc可以作为变量、函数等元素的名字,但并不代表abc就是某个变量或函数的名字,而

  • c++指针的具体用法总结

    在C++中,指针用得比较多,对于里面众多的指针用法,不免弄得有些糊涂,自从我从图书馆里借到一本谭浩强教授主编的《C++面向对象程序设计》后,才帮我理清了思路。现把部分内容展现给大家,希望对大家有所帮助。C++程序设计重要基础就是类和对象,对象指针是很重要的一部分,包括指向对象的指针、指向对象成员的指针、this指针、指向对象的常指针、指向常对象的指针等。  1、指向对象的指针定义:对象空间的起始地址就是对象的指针。说明:在建立对象时,编译系统就为每个对象分配一定的存储空间以存放其成员,不过注意,在一般情况下不同对象的数据存储单元中存放的数据成员是不相同,而不同对象的函数代码却是相同的,也就是说

  • C++与其他编程语言的关系,相互如何调用

     读者可能很熟悉编程和编程语言的基本概念,下面从普遍的意义上简要描述一下本书将用到的一些术语,并阐述C++与其他编程语言的关系。无论使用哪种编程语言,编写出来的程序都是由各个指令构成的。这些指令就称为源代码,存储在磁盘的源文件中。目前有许多编程语言,每一种语言都有其优缺点,都有其吹捧者和批评者。除了C++之外,读者一定还听说过BASIC、COBOL、FORTRAN、PASCAL和C等编程语言。  例如,FORTRAN语言就有将近40年的历史了,目前仍广泛应用于科学和工程计算中,但C++和其他语言也逐渐进入这些领域。COBOL语言专门用于商务数据处理应用程序,它的历史几乎与FORTRAN语言一样

  • c++栈(stack)与堆(heap)详解

    一、预备知识-程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分  1、栈区(stack)- 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。  2、堆区(heap) - 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 .注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。  3、全局区(静态区)(static)-,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局  变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放  4、文字常量区 -常量字

  • C++入门之函数的使用方法

    本系列一开头就说明了何谓程序,并说明由于CPU的世界和人们存在的客观物理世界的不兼容而导致根本不能将人编写的程序(也就是算法)翻译成CPU指令,但为了能够翻译,就必须让人觉得CPU世界中的某些东西是人以为的算法所描述的某些东西。如电脑屏幕上显示的图片,通过显示器对不同象素显示不同颜色而让人以为那是一幅图片,而电脑只知道那是一系列数字,每个数字代表了一个象素的颜色值而已。为了实现上面的“让人觉得是”,得到算法后要做的的第一步就是找出算法中要操作的资源。前面已经说过,任何程序都是描述如何操作资源的,而C++语言本身只能操作内存的值这一种资源,因此编程要做的第一步就是将算法中操作的东西映射成内存的值

  • c++宏定义及其使用方法 宏的使用问题简单总结

    C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。宏使用中的常见的基础问题#符号和##符号的使用...符号的使用宏的解释方法我们能碰到的宏的使用宏使用中的陷阱常见的基础性问题关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)        do{ if (EXP)     &n