我在大一的时候听说过程序员写代码和盘古开天辟地以及上帝创世有异曲同工之妙,于是我对于编程产生了浓厚的兴趣。后来大一的C++课程并没有给太大的惊喜,
反而觉得这是一门比较枯燥的课程,老师给我们的建议是买一本C++primer回去多看看,自己多钻研。这与我高中时候看待学习的观念完全不同,我认为我们当时的我觉得要学会一门课程=80%老师的授课+20%课后的作业(高中就是这么过来的)。后来,我才知道大学要修炼的一项必会的技能是自学。然后我就开始看C++primer了:)。。。
开始的时候我使用的是老师推荐的visual c++做IDE,后来为了与C++Primer的教程同步就下载了visual studio 2013。相比而言,从一个0基础的初学者角度我觉得后者在使用上更加方便一点,而前者是比较适用初学者(可是我还是选择了后者因为长得好看)。
相比于学校的C++教科书而言,我觉得C++primer更适用像我这样0基础的入门者,它在我学习的过程中更多得做到了循循善诱,让人醐醍灌顶。
我处于一种在不断学习并接受新的概念的过程中,说到C++学习的心得,我觉得作为初学者在自学过程中比较重要的一点就是看到某个概念,你要知道的它的含义(最好可以有用自己通俗的语言去表述出来方便于记忆),与它类似的概念,它的用法(在编写代码的时候要知道它在程序中起到的作用),以及了解它有哪些细节上的陷阱,我们应该要去避免。比如说到引用,我们应该知道,引用本身不是对象,它只是为对象起了另一个名字(我们在定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用),引用必须被初始化(因为一旦初始化完成,引用将和它的初始值对象一直绑定在一起,无法重新绑定到另一对象)
Eg1:int i1=100;
int &a=i1;//a指向i1(a是i1的别名)
int b;//错误:引用必须被初始化
说到引用,必然会想到都是复合类型并经常和它放在一起说的指针,指针也是C++的难点之一。如果说一说指针,我必然会想到的它是一种指向另外一种类型的复型。指针本身是个对象并允许对其赋值拷贝,指针不需要在定义时赋值。还有比较重要的是指针的类型要和它所指对象严格匹配。
Eg2:double v;
double *p1=&v;//p是指向变量v的double型指针(p1存放了v的地址)
double *p2=p1;//初始值是指向double对象的指针
int *p3=p1;//错误:P3的类型和P1不匹配;
p3=&v;//错误:double型对象的地址无法赋给int型指针。
在Primer的课后习题中也问到了指针和引用的区别,我先是在本子上写了几点自己能想到的,然后再结合书本,最后在网上搜索两者的相似和不同之处,归纳基本如下:
相似点:都实现了对其他对象的间接访问;
区别:1.指针本身是一个对象;引用并非对象只是对象的别名。
2.引用在定义只能在定义时被初始化,并且之后不能改变;指针可以在定义时不被初始化,并且之后可变。
3.系统会给指针分配内存空间;系统不为引用分配内存空间(引用和绑定的对象共享内存空间)
当然还有很多关于引用和指针的知识难点恕我不能一一叙述。
在学习C++的过程中,我有很多感悟
1很多知识点都是环环相扣,每一个小细节小知识点可能都会在你未来的编程之路上起到很大的作用,注重平时细小的积累,最后才能打通“任督二脉”。
2. 编程主要靠自学以及浓厚的兴趣和大量的练习(以前一直以为编程会是老师手把手教的那种…)
3.C++的学习过程比较枯燥,没有过大的成就,我每次学到新的东西都会想知道这是干嘛用的,而在学JSP的过程中却能够知道每一串代码在页面中体现的作用,学习过程中显得更加通俗易懂。这给我的体会是C++入门不易,JSP上手相对而言容易。PS:学习C++的人一般都在下很大一盘棋…
4.刚开始学习编程的时候不要去纠结学什么语言,用什么编译器,尽管去做,到后面你就会发现各种语言之间都有共同相通的地方,你如果真正学好了一门语言,掌握一门其他的语言也是非常快的。
--------------------------分割线-----------------------------
文中的代码和概念引自<<C++primer 5th>>
第一次写随笔,感觉不是很满意,感觉废话好多,不会用博客,排版很乱,写完发现要具体的示例,不知道我的示例算不算示例,还有手动码字好累!!!有做得不好地方请老师们多指教!