学习C++疑惑

大一上学期学了《C程序设计》 现在是二学期
用《C++程序设计》看了大概的语法。然后学了《thinking in C++》/
接下来应该看选择这三个的哪个? 1 数据结构和算法方面的书?
2 还是看看诸如effective 之类的书
3 VC游戏的入门书
我的短期目标是做个小游戏。这只是娱乐和提供兴趣。

其实你所列举的都要学习,下面是我的建议,希望对你有帮助:

(1)先用C++做小游戏!(在你有一定的c++基础后,最好的的深入学习方法却是从一个具体的开发过程开始的,而不是形而上学地继续肤浅地看理论著作。在这个过程中,你会发现原来要做成小游戏也不容易啊,还有好多东西不懂,这就对了,先就像查资料一样去学习要完成小游戏所需知识吧,不能尽善尽美不要紧,目标就是一定得把小游戏做出来!)

(2)有了(1)的过程,你一定会有很多感慨(原来好多东西想得到但做不到呢,对以前学的东西也会有新的理解),并且也会有一点小小的成就感(毕竟搞定了自己的第一个比较完整的开发过程),这样诱导出来的更多困惑和思考会导致下一步更清晰的目标,而成就感就会给你更大的动力去达成下一个学习目标!

这个时候,我给你的首先建议是:去弄清楚一个可执行程序(无论是CUI控制台程序还是GUI图形界面程序)在操作系统OS下运行的生死过程吧,这会对你建立整体概念非常有帮助(我想这也应该是你的首要困惑);然后再回过头来学习effective c++或者初步学习数据结构及简单算法,等你又具备足够信心的时候,再制定下一个开发项目吧(比如一个比上一次完成的那个更好的游戏)

(3)重复(1)的过程,然后开始进一步了解面向对象编程(OOP)思想(c++语言就是支持OOP的最好语言),进一步了解Windows操作系统下的GUI编程(当然你以后可能需要学习其他操作系统下的编程方法,不过都是类似的,掌握思想及概念最重要)

(4)进一步学习数据结构和算法(建议开始实践中学习使用C++的STL),至于算法教材我推荐:
《C++数值算法》 中文版 第二版
《numerical recipes in c++》这是英文原版的书名

(5)理论和实践相互印证,旋上升才是学习的王道!不怕苦,不放弃,正确的学习方法和正确的学习态度决定了你以后在程序开发上能走多远。
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-03-29
effective 还是可以看看的
看看数据结构吧

算法这个东西,慢慢才能吃透,一口不能吃下一个胖子
第2个回答  2009-03-29
数据结构和算法,后续课程会讲
effective c++ 很好的书 可以看看
vc比较难 难在mfc对类对封装的理解
第3个回答  2009-03-29
数据结构和算法方面的书

C++初学者的疑惑。 教材上的问题,为什么增加 Pi的精度输出的结果不变...
你好!cout输出流默认的有效位数是6位。如果你想输出更多的有效数字,可以增加iomanip.h头文件,其中steprecision(n)表示有效位数,n就是有效数字的位数,例如:cout << setprecision(10) << 1.2345678f <<endl;详细的使用方法可以在教材上I\/O流控制部份查找。希望能给你一点帮助。

C++.Net中的一些疑惑
1. 在C++\/CLI中,同时使用gcnew,来说明对象是创建在托管堆上的。2. 关于interior_ptr,留待后面解释。同时,在C++\/CLI中,数字0不再代表空地址,而仅仅代表数字0。空地址有一个关键字:nullptr。所以,下面的代码就是把0给boxing了,再传给指针obj:Object^ obj=0;而只有下面的语句,才真正把一个...

一个关于c++指针变量的疑惑?
存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。i_pointer是一个指针变量,则*i_pointer表示i_pointer指向的变量。换句话说,*i_pointer所指向的空间中存储的是一个数值,也就是题目中说的3。举个例子,int a...

c++基础题目,很疑惑,为什么这个for循环只执行一次,能有大神帮我解答下...
首先此处的j没定义,此处应该是x=x\/i, 和j没啥关系啊.还有此循环没设置出口,需要在x=2的时候跳出。

C++对指针有点疑惑不解
int *p=&a;晕,居然还有这种问题啊 在这里是初始化,是对变量进行初始化,在这语句中的变量是p而不是*p,因此对变量p进行初始化就要使用与该变量相应的值来进行初始化,因为变量p是指针,所以需要a的地址来初始化。再比如吧 int p[2]={1,2};在这里也是对变量p进行初始化,而不是对p[2]进行...

C++ iostream 类 疑惑
IOstream东西的很复杂,看起来以你的水平还不能够掌握。你的目的无非是定义一个输出流,然后输出。但你要明白,真正执行输出操作的不是ostream,而是streambuf,所以你要为自己定义的流对象指定一个缓冲流对象。缓冲流对象你会定义吗?如果你真的非要这么玩,那你只能这样:ostream one(cout.rdbuf()),...

c++一个引用 的疑惑
一点 int * & refPtrFreeStore 我觉得是这样的 int(返回值类型)(后面的是指针变量)& refPtrFreeStore (是refPtrFreeStore的一个引用,但它是个指针变量)二点:refPtrFreeStore是指针,*refPtrFreeStore是指针指向的值 &refPtrFreeStore是引用,实际上和ptrFreeStore一样的 删除refPtrFreeStore即...

C\/C++ 语言字符数组和字符串数组的疑惑
char str[30] = "Mynameis";puts(&str[1])这里首先str[1]表示取字符序列中的第一个字符,然后&str[1]表示取第一个字符在字符序列中的地址,也就是告诉了puts从第一个字符处开始向后面遍历这个字符串,这样很明显就跳过了第0个字符了。导致输出结果中不含有第0个字符M char str[5] = {'a'...

怎么学好C++,我不知道学这个有什么用,老师说编程什么的,可是除了调试成 ...
但是别紧张,这不是说立马让你放下C++去搞汇编,或者学习研究什么协议。一般来说,任何底层组件都会向更上层提供适当的接口以调用其各种功能,而且这些调用都能够在高层语言的某个库中找到。说到这里,你对C++中的很多类库熟悉吗?那些类库正是C++实现复杂功能的基本元素。不仅是C++,任何编程语言都会提供...

c++中关于char与cin的疑惑
因为你在输入的时候,只是输入到缓存,并没有传给变量C。当按回车传给变量C的时候多余的就会被抛弃并报错。

相似回答
大家正在搜