c++编程怎么学习?

2025-11-03 16:55:25

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++!

2、简单的C++学习记录:

4.二维指针的应用实例:

#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)) )//比较过程

                            {

                                     strcpy(temp, *(client + temp2));

                                     strcpy(*(client + temp2), *(client + temp2 + 1));

                                strcpy(*(client + temp2 + 1), temp);

                            }

                   }

         }

}

5.类型转换中的结构体:如p = (struct student * )stu[0].name  将p指向结构体的内部元素的地址,要进行类型转换,先转换为p的类型。

6.定义在函数内部的指针结构体是不会被系统释放的。例程:猫和老鼠。

void Insert(struct student *pHeadGet, int numInsert)

{

         struct student *pOne, *pTwo, *pInsert;

         int temp;

         pTwo = pOne = pHeadGet;

         for( temp = 0; temp < numInsert - 1; temp++ )

         {

                   pTwo = pTwo->pNext;

         }

         pOne = pTwo->pNext;

         printf("Please into the number and the score:\n");

     pInsert = (struct student *) malloc(LEN);//这个在函数内部开辟的空间在函数调用后还是保留在内存

         scanf("%d%d", &pInsert->number, &pInsert->score);

         pTwo->pNext   = pInsert;

         pInsert->pNext = pOne;

}

7:连接字符的错误写法:

#include <stdio.h>

main()

{

         char a[]="wo shi libingbing", b[] = "li jiang ye shi wo";

         char *p1, *p2;

         p1 = a;

         p2 = b;

         //*(p1 + 17) = *(p2 +0);

         //(p1 +17) = p2;此处在尝试改变数组的值,这是不允许的

         printf("%s", p1);

}

8.指针中赋值和修改的一些容易错误和注意的地方

#include <stdio.h>

void main()

{

         char amessage[] = "now is the time";

         char *pmessage  = "now is the time";

         int *pInt = {2, 3, 6, 23};//这样的定义是不允许的

         *(amessage + 3) = 'H';

//       *(pmessage +3)  = 'H';  不能尝试修改指针定义的字符数组

         printf("%s\n%s\n", amessage, pmessage);

        

         pmessage = amessage;

         *(pmessage +3)  = 'h';

        

         printf("%s\n%s\n", amessage, pmessage);//从执行结果可以知道指针只是一种指向,不能达到引用并修改字符串的能力

         //       *(pInt + 3) = 8;

//  printf("%d", pInt);

}

9.字符串的操作:

stringDepart()

//讲字符串进行分解成单个单词的形式

//返回打印结果

while (tempChar = GETCHAR != EOF)

{

         if (tempChar == (‘ ’ || ‘\n’ || ‘\t’))

{

         if (STATE == IN)

{

                   // 得到一个单词

                   STATE == OUT;

}

else if (STATE == OUT)

{

         STATE == IN;

         //操作字符

}

else

{

         //操作字符

}/

         }//end if (tempChar == (‘ ’ || ‘\n’ || ‘\t’))

}///stringDepart

10.Stract函数:

   /*strcat function*/

//函数将字符串t接到s中

void strcat(char *s, char *t)

{

         while (*s)

                   s++;

         while(*s++ = *t++)

                   ;

}

11.标准的冒泡排序:

for( times = length - 1; times > 0; times--)   //排序的次数

         for( client = 0; client < times; client++) //控制比较

            if (item[client] > item[client + 1])  //比较交换

                            {

                                     //交换client和client + 1的值

                            }

12.用户控制的程序结束:

while(1)

{

//操作代码

if(checkChar = ‘q’ || ‘Q’) return;

//操作代码

}

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢