学完C语言,我该做什么?

 

我该学点什么,这是我遇到的最多的问题。通常我会做这样的回答。

    启蒙:不要一开始就陷入哪个语言更好的苦恼当中。如果你是计算机相关专业的学生,你应该好好学习C/C++,因为它是计算机世界的英语。无数的技术书籍都以它为描述语言的。JAVA目前依然很火,是很好的就业语言。如果你实在无法决定,请考虑Python。

    先练基本功:当你学完语法后,你会感觉,你所学到的东西跟开发软件压根不是一回事,指针、链表之类的怎么能变成像QQ,CS这样的软件呢?这时候,你需要学习系统编程。它会让你打开图形软件开发的世界。记住,不要过早地学习类库,框架之类的东西。这些往往掩盖了系统SDK的细节,而带着明显企业风格的封装。了解系统编程的细节是一个永无至境的过程,所以不要太过深入,这一阶段,浅尝即止,了解基本的结构,基本的框架。

    外练筋骨皮:现在你可以尽可能多地接触计算机技术了,比如,网络技术,图形技术,数据库技术,WEB技术等等。尽可能多地了解计算机的技术分类,会让你以后在解决问题的有一个全局视野,考虑问题会比较全面。在这过程中,你可以开发一些小程序,小游戏、小的聊天室、小的MIS系统等。

    内练精气神:在上一阶段的实践中,你会发现,当代码量达到一定程序时,你自己驾驭代码的能力有些不足了,代码量一大,自己就会很混乱,改一个错误会引发一百个错误。这时,你需要回头去学习你在学习C++时那些似懂非懂的面向对象,学习设计模式,学会用面向对象的方法去分析,去设计,去编码。不要理会别人对面向对象是否合理的争论。

   逐成德品行:了解,并养成良好的软件开发习惯,是你在后一阶段需要注意的事情。你是否注意变量命名,代码格式这些细节的问题。你是否知道如何进行版本管理,你是否会对你的代码进行自动化的测试,你是否会重新设计一个月之前写的代码,你是否善于和别的程序员沟通,这些都将成为你面试时绝杀的技能。

 

黄勇    二〇一〇年于金陵 二〇一九年九月二十一日更新

http://blog.youkuaiyun.com/mgphuang

<think>好的,用户问的是C语言后如何继续习C++。这个问题其实挺常见的,因为C和C++有联系,但也有很多同。我得先理清用户的基础,他们已经掌握了C,所以对编程的基本概念应该没问题,比如变量、循环、函数、指针这些。但C++引入了很多新概念,比如类、对象、模板、异常处理等等,需要逐步引导他们过渡。 首先,用户可能需要了解从C到C++的过渡步骤。我应该先强调两者的区别,比如C++支持面向对象编程,而C是过程式的。需要让用户明白,虽然语法相似,但编程范式同,思维方式也需要转变。 接下来,可能需要分阶段来介绍习路径。比如,第一阶段是熟悉C++的基础语法,包括输入输出、命名空间、引用等。然后逐步深入到面向对象的部分,比如类、继承、多态。之后是STL和模板,这是C++强大功能的重要组成部分。最后是高级特性,比如智能指针、移动语义、多线程等。 还要考虑用户可能遇到的习难点,比如理解面向对象的概念,或者模板元编程的复杂性。这时候需要建议一些习资源,比如经典的书籍《C++ Primer》或者在线教程,同时强调实践的重要性,通过项目来巩固知识。 另外,用户可能想知道如何练习,所以推荐一些练习方法,比如LeetCode或者自己动手项目。同时,要提醒他们注意C++的细节,比如内存管理和异常安全,这些地方容易出错。 最后,总结一下习路线,鼓励用户持续习和实践,毕竟C++的内容很多,需要循序渐进。可能还需要提到社区和文档的重要性,遇到问题可以查阅资料或者寻求帮助。</think>以下是从C语言过渡到C++的系统习路线,分阶段渐进式习更高效: 一、基础过渡阶段(1-2周) 1. 理解C与C++的核心差异 - 从面向过程到面向对象编程思维转变 $$ \text{C程序} \Rightarrow \text{C with Classes} \Rightarrow \text{Modern C++} $$ - 掌握C++新特性:命名空间`namespace`、引用`&`、布尔类型`bool` 2. 基础语法升级 ```cpp #include <iostream> // 替代<stdio.h> using namespace std; // 命名空间声明 int main() { string s = "Hello C++"; // 原生字符串类型 cout << s << endl; // 类型安全的I/O auto x = 3.14; // 自动类型推导 return 0; } ``` 二、面向对象核心(3-4周) 1. 类与对象 - 访问控制:`public/protected/private` - 构造函数/析构函数 - 静态成员`static`与常量成员`const` 2. 三大特性深入 ```cpp class Shape { // 基类 public: virtual void draw() = 0; // 纯虚函数→抽象类 }; class Circle : public Shape { // 继承 public: void draw() override { // 多态实现 cout << "Drawing circle" << endl; } }; ``` 三、进阶特性掌握(4-6周) 1. 模板编程 ```cpp template <typename T> // 泛型编程 T max(T a, T b) { return (a > b) ? a : b; } ``` 2. 现代C++特性(C++11/14/17) - 智能指针:`unique_ptr`, `shared_ptr` - Lambda表达式:`[](int x){ return x*2; }` - 移动语义:`std::move` 四、习路线建议 1. 推荐教材: - 基础:《C++ Primer》(第5版) - 进阶:《Effective C++》《STL源码剖析》 2. 实践建议: - 成200+道LeetCode题目(从简单到困难) - 开发小型项目:图书管理系统、简易游戏引擎 - 参与开源项目(如:GitHub C++项目贡献) 五、关键注意事项 1. 避免常见误区: - 要用`malloc/free`代替`new/delete` -
评论 128
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值