从头学C++(1)

本文介绍了C++初学者如何读取不定数量的输入数据并进行累加,讲解了如何处理无效输入及程序终止。此外,还讨论了变量的默认初始化、作用域以及引用的概念,强调了引用作为变量别名的特性,并提醒读者注意命名规范和变量定义的位置。

从头学C++(1)

练习内容来自于C++ Primer第五版,使用CodeBlocks。

读取数量不定的输入数据。

#include<iostream>
using namespace std;

int main(void)
{
    int val = 0;
    int sum = 0;
    while(cin>>val)
    {
        sum+=val;
    }
    cout<<sum<<endl;
    return 0;
}

只有读取整形数,才能累加,读取其余任意内容(无效输入),直接终止循环,输出结果,结束。
至于书中的文件结束符,没有发现如何使用,从百度得知是EOF,在我的编程中很少使用。直接输入无效输入,终止程序即可。

调用类,使用标准库的头文件用< >,使用不属于标准库的头文件用“ ”。
定义字符串,使用char数组或指针([ ]或*),或使用string。

默认初始化

#include<iostream>
using namespace std;

string global_str;
int global_int;

int main(void)
{
    int local_int;
    string local_str;
    cout<<global_str<<'\n';
    cout<<global_int<<'\n';
    cout<<local_str<<'\n';
    cout<<local_int<<endl;
    return 0;
}

输出结果为:依次为四个输出结果
local_int为局部变量,没有赋值,输出结果为随机值。图片结果为本次结果的随机值。

extern,可以用于声明变量,而不是定义变量,用于多个.cpp文件编译运行时,可以避免全局变量名冲突。

C++标准库保留了一些名字,程序员自己定义时,不能使用两个连续的下划线开头(__)。也不能使用单个下划线加大写字母(_D)。变量名一般以小写字母开头,类名一般以大写字母开头。

定义变量时,最好在第一次使用的地方定义,定义变量的作用范围为一个花括号({ }),在循环内定义变量,只能在循环内使用,在函数内定义变量,只能在函数内使用。
如果在外层定义变量,内层可以直接使用,也可以重新定义变量。

引用
引用不是新的对象,而是和已有的对象绑定,而且绑定后不能绑定另一个对象。

#include<iostream>
using namespace std;

int main(void)
{
    int ival = 1024;
    int &refval = ival;
    cout<<ival<<'\t'<<refval<<'\n';
    refval = 3;
    cout<<ival<<'\t'<<refval<<'\n';
    ival = 10;
    cout<<ival<<'\t'<<refval<<'\n';

    cout<<endl;
    return 0;
}

refval的值改变,ival的值也改变,同样,ival的值改变,refval的值也改变。引用是变量的别名。引用不是一个对象,所以不能定义引用的引用。即不=不能定义:int &s = &refval

<think> 嗯,用户想要从零开始C++的方法和资源。之前系统给的引用里提到了书籍、在线课程和实践平台,还特别强调了Qt习中的困难,看来用户可能对实践资源比较关注。 用户明确说要"从头开始",说明是纯新手。需要特别注意避免直接推荐太专业的资源,比如《The C++ Programming Language》这种经典但门槛高的书可能不太适合第一本。不过引用[1]里把书籍分成了入门、进阶、深入三个层次,这个思路很好。 注意到引用[2]提到Qt初者面对英文文档的困扰,这提醒我应该优先推荐中文资源。虽然C++很多权威资料是英文的,但对零基础用户来说,初期用母语习效率更高。 用户没提具体应用方向,但引用里反复出现Qt,可能暗示对GUI开发有兴趣?不过既然用户没明确说,我还是保持通用性比较好,重点放在核心语言习上。 整理资源时要分类清晰: - 书籍必须标注难度层级 - 视频课程要说明特点(比如是否有中文) - 练习平台要标注适合新手的部分 - 要特别提醒避开常见陷阱,比如引用[2]说的"初者直接看英文文档"的问题 用户情绪应该是积极但略带焦虑的,"零基础"这个词出现了两次。需要在方法部分强调循序渐进,给些具体可操作的习路径,比如明确说"前两周先做什么",这样能降低新手的不安感。 最后考虑补充些引用没提到的实用建议: - 编译器配置这种实操细节 - 调试技能的重要性 - 如何阅读错误信息 - 项目驱动习的具体案例 这样能让建议更立体。 </think> 基于你的需求,以下是系统化的C++习方法与精选资源清单,结合了引用内容并优化了习路径: --- ### **一、分阶段习方法** 1. **基础语法阶段(2~3个月)** - 核心:掌握变量、循环、函数、指针、类与对象 - 关键实践:**每天手写代码**(避免只读不写),例如实现计算器、生管理系统 - 避坑提示: - 指针初时易混淆,可通过画内存图辅助理解 - 类设计优先理解`封装`概念,再深入继承与多态 2. **进阶实战阶段(2个月)** - 重点攻克: - STL容器(`vector`/`map`)与算法(`sort`/`find`) - 内存管理(`new/delete` VS `智能指针`) - 模板编程基础 - 项目驱动: - 用`文件IO`实现通讯录持久化存储 - 用`多线程`模拟生产者-消费者模型 3. **专项深化阶段(按需选择)** | 方向 | 关键技术点 | 推荐实践项目 | |------------|---------------------|--------------------------| | GUI开发 | Qt框架/QML | 开发图片查看器[^2] | | 游戏开发 | Unreal Engine C++ | 制作3D迷宫游戏 | | 系统编程 | Linux API/网络编程 | 实现简易HTTP服务器 | --- ### **二、高效习资源** #### **书籍(按难度分层)** | 层级 | 书名 | 特点说明 | |--------|-------------------------------|----------------------------| | 入门 | 《C++ Primer》(第5版) | 语法全面,含现代C++特性[^1] | | 进阶 | 《Effective C++》(第3版) | 55条改善代码的最佳实践 | | 实战 | 《C++ GUI Qt 4编程》 | Qt开发权威指南(含完整案例)[^2] | #### **在线课程(中文友好)** 1. **Coursera** - [《C++程序设计》](https://www.coursera.org/specializations/cpp)(北京大)- 系统性强 2. **Bilibili** - "黑马程序员C++全套教程" - 项目贯穿式教 - "传智播客Qt从入门到实战" - 含企业级项目[^2] #### **练习平台(按难度筛选)** - **LeetCode**:新手优先练习`数组/字符串`标签的**简单题** - **Codeforces**:参与`Div.3`竞赛锻炼实战思维 - **GitHub**:阅读优质开源项目(如[Qt源码](https://github.com/qt))[^2] #### **工具与社区** ```markdown 1. [CppReference](https://zh.cppreference.com) - 中文版语法速查 2. [Stack Overflow](https://stackoverflow.com) - 搜索"C++"标签解决具体错误 3. [Qter开源社区](http://www.qter.org) - 国内Qt开发者聚集地[^2] ``` --- ### **三、关键习建议** 1. **环境配置**: 初者建议使用 **Visual Studio(Windows)** 或 **Qt Creator(跨平台)** ,一键编译调试避免环境问题[^2] 2. **调试能力**: - 务必掌握**断点调试**与**内存泄漏检测工具**(如Valgrind) - 常见错误优先查阅[Stack Overflow相似问题](https://stackoverflow.com/questions/tagged/c%2b%2b) 3. **项目驱动**: - 每完一个模块,立即用20~50行代码实现小功能(如:用`vector`管理游戏角色) 4. **避免误区**: > ❌ 死磕复杂语法(如模板元编程) > ✅ 优先掌握工程常用特性(RAII、lambda表达式) --- ### **相关问题** 1. 如何平衡C++理论习与项目实践的时间分配? 2. Qt开发中如何快速解决界面卡顿问题? 3. C++11/14/17新特性是否有必要?如何循序渐进? 4. 哪些开源C++项目适合初者参与贡献? > 提示:遇到具体编码问题时,建议直接搜索 **"问题描述 + site:stackoverflow.com"** 高效获取解决方案[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值