c++编程学习的技巧总结

1、把C++当成一门新的语言学习(和C没啥关系)。

2、看《Thinking In C++》,不要看《C++编程思想》。

3、看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看。

4、不要被VC、BCB、BC、MC、TC等词汇所迷惑–他们都是集成开发环境,而我们要学的是一门语言。

5、不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点。

6、会用Visual C++ ,并不说明你会C++。

7、学class并不难,template、STL、generic programming也不过如此,难的是长期坚持实践和不遗余力的博览群书。

8、如果不是天才的话,想学编程就不要想玩游戏–你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高–其实可以时刻记住:学C++是为了编游戏的。

9、看Visual C++的书,是学不了C++语言的。

10、浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?

11、浮躁的人容易问:我到底该学什么;——别问,学就对了;

13、浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!

14、浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行。

15、浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人。

16、把时髦的技术挂在嘴边,还不如把过时的技术记在心里。

17、C++不仅仅是支持面向对象的程序设计语言。

18、学习编程最好的方法之一就是阅读源代码。

19、在任何时刻都不要认为自己手中的书已经足够了。

20、请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准。

21、看得懂的书,请仔细看;看不懂的书,请硬着头皮看。

22、别指望看第一遍书就能记住和掌握什么–请看第二遍、第三遍。

23、请看《Effective C++》和《More Effective C++》以及《Exceptional C++》。

24、不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序。

25、和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好。

26、请看《程序设计实践》,并严格的按照其要求去做。

27、不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样。

28、C++绝不是所谓的C的“扩充”–如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密。

29、请不要认为学过XX语言再改学C++会有什么问题–你只不过又在学一门全新的语言而已。

30、读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++。

31、学习编程的秘诀是:编程,编程,再编程。

32、请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》、《面向对象软件构造(Object-Oriented Software Construction)》、《设计模式(Design Patterns)》、《The Art of Computer Programming》。

33、记住:面向对象技术不只是C++专有的。

34、请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码。

35、把在书中看到的有意义的例子扩充。

36、请重视C++中的异常处理技术,并将其切实的运用到自己的程序中。

37、经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去。

38、不要漏掉书中任何一个练习题–请全部做完并记录下解题思路。

39、C++语言和C++的集成开发环境要同时学习和掌握。

40、既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的。

41、就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主。

42、当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手,请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43)。

43、别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的。

44、绝不要因为程序“很小”就不遵循某些你不熟练的规则–好习惯是培养出来的,而不是一次记住的。

45、每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解–你能讲清楚才说明你真的理解了。

46、记录下在和别人交流时发现的自己忽视或不理解的知识点。

47、请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX。

48、保存好你写过的所有的程序–那是你最好的积累之一。

49、请不要做浮躁的人。

50、热爱C++!

最后,也想说这句话,学习C++就请热爱C++!

1 :指针变量名称以p为首字符,这是程序员通常在定义指针时的一个习惯

2 :har * p; (int *)p 把p强制转换为int型

3.1 :指针的问题:指针应用时最好给予定义(初始化)这样可以保证指针的指向是程序员自己能够把握的。

3.2 :指针的越界,这恐怕是最难查出的吧!

3.3 :指针的局部变量问题。局部的指针变量会被程序自动释放,若程序员引用此类指针就会出错。

.二维指针的应用实例:

#include <stdio.h>

#include <string.h>

void sort(char (*client)[10]);

void main()

{

     int temp;

     char client[3][10];

     char (*pClient)[10] = NULL;

     for( temp = 0; temp < 3; temp++ )

     {

          gets(client[temp]);

     }

     pClient = client;

  sort(pClient);

     for( temp = 0; temp < 3; temp++ )

     {

          puts(*(pClient + temp));

     }

}

void sort(char (*client)[10])

{

     //冒泡算法的明了写法

     int temp1, temp2;

     char temp[10];

   for( temp1 = 2; temp1 > 0; temp1-- )//控制每一步的比较次数

     {

          for( temp2 = 0; temp2 < temp1; temp2++ )//比较指针

          {

              if( strcmp (*(client + temp2), *(client + temp2 + 1)) )//比较过程
(0)

相关推荐

  • C++ 格式化日志输出实现代码

    核心代码 void LogOut(LPCTSTR pFormat, ...) { char LogFile[128]={0}; char str[1024]={0}; FILE** fp=&(ThreadDatas[0].pf); va_list pArg; EnterCriticalSection(&cs_log);//独占访问 __try { SYSTEMTIME st; if(ThreadDatas[0].num>100000)//10W条一个文件 { if(fp) { fcl

  • C/C++格式化日志库实现代码

    头文件如下: /*****************************************************/ /* 跨平台日志函数,Linux下与windows下亲测有效 */ /*****************************************************/ #ifndef _LOG_FORMAT_H_ #define _LOG_FORMAT_H_ // 日志等级 enum LogLevel { _LOG_TRACE, _LOG_INFO, _LOG

  • C++获取MD5算法实现代码

    这个是网上扒下来的 作者已经无法知道是谁了 MD5.h #ifndef MD5_H #define MD5_H #include <string> #include <fstream> /* Type define */ typedef unsigned char byte; typedef unsigned int uint32; typedef unsigned int uint4; using std::string; using std::ifstream; /* MD5

  • 用C/C++代码检测ip能否ping通(配合awk和system可以做到批量检测)

    遇到一个小需求, 快速搞定. 来看看用C/C++代码检测ip能否ping通: #include <iostream> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> using namespace std; string getCmdResult(const string &strCmd) // 这个是获取命令执行的结果, 类似于

  • C++ Log日志类轻量级支持格式化输出变量实现代码

    CLog 头 代码很简单 如果需要的直接Ctrl+C ----Ctrl+V 即可 #ifndef __CLOG__ #define __CLOG__ #include <windows.h> #include <string> #include <fstream> #include <tchar.h> #include <ctime> class CLog { public: CLog(); CLog(const std::string LogF

  • C++基于消息队列的多线程实现示例代码

    前言 实现消息队列的关键因素是考量不同线程访问消息队列的同步问题.本实现涉及到几个知识点 std::lock_guard 介绍 std::lock_gurad 是 C++11 中定义的模板类.定义如下: template <class Mutex> class lock_guard; lock_guard 对象通常用于管理某个锁(Lock)对象,因此与 Mutex RAII 相关,方便线程对互斥量上锁,即在某个 lock_guard 对象的声明周期内,它所管理的锁对象会一直保持上锁状态:而 l

  • C++11获取线程返回值的实现代码

    C++11 std::future and std::promise 在许多时候,我们会有这样的需求--即我们想要得到线程返回的值. 但是在C++11 多线程中我们注意到,std::thread对象会忽略顶层函数的返回值. 那问题来了,我们要怎么获得线程的返回值呢? 我们通过一个例子来说明如何实现这个需求. 假设我们的app会创建一个线程来压缩一个文件夹,该线程在压缩完文件夹后会返回压缩文件 *.zip 和这个zip文件的大小,我们现在就想获得这个线程的返回值. 有两种方法可以实现这个需求: 1

  • C++获取特定进程CPU使用率的实现代码

    近来发现笔记本在关闭屏幕后风扇转得特别快,打开屏幕后看任务管理器,风扇马上减速,也没有发现大量占用CPU的进程.于是想写一个小程序在后台记录每个进程的CPU使用情况,揪出锁屏后占用CPU的进程.于是自己写了一个C++类CPUusage,方便地监视不同进程的CPU占用情况.本人编程还只是个新手,如有问题请多多指教( •̀ ω •́ )! 计算原理为调用GetProcessTimes(),与上次调用得到的结果相减得到CPU占用时间,再除以两次调用的时间差,从而得到占用百分比.其中OpenProces

  • C++中map和vector作形参时如何给定默认参数?

    map和vector都可以用operator[]进行访问,map是用[]中的数据作为key进行查询,而vector是用[]中的数作为下标进行访问. 如果在用operator[]进行访问的时候出现了越界情况,即map没有这个键值对,或vector的大小小于下标数值,会发生什么情况? struct node{int a{5};}; int main() { map<string,node> m1; cout<<m1["s"].a<<endl; map&l

  • 详解C++中构造函数,拷贝构造函数和赋值函数的区别和实现

    C++中一般创建对象,拷贝或赋值的方式有构造函数,拷贝构造函数,赋值函数这三种方法.下面就详细比较下三者之间的区别以及它们的具体实现 1.构造函数 构造函数是一种特殊的类成员函数,是当创建一个类的对象时,它被调用来对类的数据成员进行初始化和分配内存.(构造函数的命名必须和类名完全相同) 首先说一下一个C++的空类,编译器会加入哪些默认的成员函数 默认构造函数和拷贝构造函数 析构函数 赋值函数(赋值运算符) 取值函数 **即使程序没定义任何成员,编译器也会插入以上的函数! 注意:构造函数可以被重载

随机推荐