【C++】——初识C++(一)

news2025/1/21 0:47:12

文章目录

  • 1. 进入C++
    • 1.1 main()函数
    • 1.2 C++注释
    • 1.3 C++预处理器和iostream文件
    • 1.4 头文件名
    • 1.5 名称空间
    • 1.6 使用cout进行C++输出
      • 1.6.1 控制符endl
      • 1.6.2 换行符
      • 1.6.3 使用cout进行拼接
    • 1.7 cin
    • 1.8 变量
      • 1.8.1 变量名
    • 1.9 常量
    • 1.10 关键字

1. 进入C++

第一个程序

// myfirst.cpp
#include <iostream>

using namespace std;

int main()
{
    cout<<"Hello World!"<<endl;
    system("pause");
    //cin.get();
    return 0;
}

    要使窗口一直打开,直到按下任意键。使用cin.get(); system("pause");的效果都是一样的。
    使用函数来创建C++程序时,通常,先将程序组织为主要任务,然后设计独立的函数来处理这些任务。myfirst.cpp示例程序非常简单,只包含一个名为main()的函数,其包含下述元素。

  • 注释,由前缀/标识。
  • 预处理器编译指令#include
  • 函数头:int main( )
  • 编译指令using namespace
  • 函数体,用{和}括起。
  • 使用C++的cout工具显示消息的语句。
  • 结束main()函数的return语句。

    下面详细介绍这些元素。先来看看main()函数,因为了解了main()的作用后,main()前面的一些特性(如预处理器编译指令)将更易于理解。

1.1 main()函数

在这里插入图片描述

main()函数结构

    就目前而言,需要记住的主要一点是,C++句法要求main()函数的定义以函数头 int main()开始。
    通常,C++函数可被其他函数激活或调用,函数头描述了函数与调用它的函数之间的接口。位于函数名前面的部分叫做 函数返回类型,它描述的是 从函数返回给调用它的函数的信息。函数名后括号中的部分叫做 形参列表(argument list)参数列表(parameter list); 它描述的是从调用函数传递给被调用的函数的信息

1.2 C++注释

  • 单行注释 //
  • 多行注释 /* statement */

1.3 C++预处理器和iostream文件

    如果程序要使用C++输入或输出工具,需要以下两行代码:

#include <iostream>
using namespace std; 

注意:使用cin和cout进行输入和输出的程序必须包含文件iostream。

1.4 头文件名

    像iostream这样的文件叫做包含文件(include file),也叫头文件(header file) 。下表对头文件的命名约定进行了总结。在这里插入图片描述

1.5 名称空间

    如果使用iostream,而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用:

using namespace std;

    这叫做using编译指令。名称空间支持是一项C++特性,旨在让您编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序。

1.6 使用cout进行C++输出

cout<<"Hello World!"

    双引号括起的部分是要打印的消息。在C++中,用双引号括起的一系列字符叫做字符串,因为它是由若干字符组合而成的。<<符号表示该语句将把这个字符串发送给cout;该符号指出了信息流动的路径。cout是什么呢?它是一个预定义的对象,知道如何显示字符串、数字和单个字符等。在这里插入图片描述

1.6.1 控制符endl

    endl是一一个特殊的C++符号,表示- -个重要的概念:重起一行。 在输出流中插入endl将导致屏幕光标移到下一行开头。诸如endl等对于cout来说有特殊含义的特殊符号被称为控制符(manipulator)。和cout一样,endl也是在头文件iostream中定义的,且位于名称空间std中。

1.6.2 换行符

    \n被视为-一个字符,名为换行符。
    显示字符串时,在字符串中包含换行符,而不是在末尾加上endl,可减少输入量:

cout << "Pluto is a dwarf planet.\n";
cout << "Pluto is a dwarf planet." << endl ;

    另一方面,如果要生成一个空行,则两种方法的输入量相同,但对大多数人而言,输入endl更为方便:

cout << "\n";
cout << endl;

    本书中显示用引号括起的字符串时,通常使用换行符\n,在其他情况下则使用控制符endl。 一个差别是,endl 确保程序继续运行前刷新输出(将其立即显示在屏幕上);而使用“\n”不能提供这样的保证,这意味着在有些系统中,有时可能在您输入信息后才会出现提示。在这里插入图片描述

1.6.3 使用cout进行拼接

     iostream 文件定义了<<运算符,以便可以像下面这样合并(拼接)输出:

cout << "Now you have " << carrots << " carrots." << endl;

     这样能够将字符串输出和整数输出合并为一条语句。得到的输出与下述代码生成的相似:

cout << "Now you have " ;
cout << carrots;
cout << " carrots" ;
cout << endl ;

     根据有关cout的建议,也可以按照这样的方式重写拼接版本,即将一条语句放在4行上: .

cout << "Now you have "
	 << carrots;
 	 << " carrots" ;
	 << endl ;

1.7 cin

cin >> a;

    从这条语句可知,信息从cin流向a。 显然,对这一过程有更为正式的描述。就像C++将输出看作是流出程序的字符流一样,它也将输入看作是流入程序的字符流。iostream文件将cin定义为一个表示这种流的对象。输出时,<< 运算符将字符串插入到输出流中;输入时,cin 使用>>运算符从输入流中抽取字符。通常,需要在运算符右侧提供一个变量, 以接收抽取的信息(符号<<和>>被选择用来指示信息流的方向)。
    与cout 一样,cin 也是一个智能对象。它可以将通过键盘输入的一系列字符(即输入)转换为接收信息的变量能够接受的形式。在这个例子中,程序将a声明为一个整型变量,因此输入被转换为计算机用来存储整数的数字形式。

1.8 变量

1.8.1 变量名

    C++提倡使用有一定含义的变量名。如果变量表示差旅费,应将其命名为cost_of _trip 或costOfTrip,而不要将其命名为x或cot。必须遵循几种简单的C++命名规则。

  • 在名称中只能使用字母字符、数字和下划线。
  • 名称的第一个字符不能是数字。
  • 区分大写字符与小写字符。
  • 不能将C++关键字用作名称。
  • 以两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。
  • C++对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制。

    倒数第二点与前面几点有些不同,因为使用像_ time _stop 或_Donut 这样的名称不会导致编译器错误,而会导致行为的不确定性。换句话说,不知道结果将是什么。不出现编译器错误的原因是,这样的名称不是非法的,但要留给实现使用。全局名称指的是名称被声明的位置。
    最后一点使得C++与ANSI C(C99标准)有所区别,后者只保证名称中的前63个字符有意义(在ANSIC中,前63个字符相同的名称被认为是相同的,即使第64个字符不同)。

1.9 常量

    C++中定义常量有两种方式:

  1. #define 宏常量 #define 常量名 常量值
  2. const 修饰的变量 const 数据类型 常量名 = 常量值

    下面这种代码不太好:

const int a;
a = 10;

    如果在声明常量时没有提供值,则该常量的值将是不确定的,且无法修改。
    如果以前使用过C语言,您可能觉得前面讨论的#define语句已经足够完成这样的工作了。但const比#define好。首先,它能够明确指定类型。其次,可以使用C++的作用域规则将定义限制在特定的函数或文件中(作用域规则描述了名称在各种模块中的可知程度。第三,可以将const用于更复杂的类型

1.10 关键字

    关键字是C++中预先保留的单词(标识符)。
在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/116341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

构建数据大屏,塑造IT运维可视化核心竞争力

随着大数据、云计算等新兴技术的发展与运用&#xff0c;在金融、交通、教育、政府等行业的信息化在飞速发展。与此同时&#xff0c;各行业的IT建设与维护管理成本也在与日俱增&#xff0c;大量的运维工作下产生庞大的运维数据&#xff0c;如何进行运维数据可视化建设也逐渐成为…

qt之smtp-demo封装与测试

简介 SMTP是一种提供可靠且有效的电子邮件传输的协议&#xff0c;它建立在FTP文件传输服务上的一种邮件服务&#xff0c;主要用于系统之间的邮件信息传递&#xff0c;并提供有关来信的通知。 SMTP的工作过程是建立连接、邮件传送、连接释放。 SMTP的默认端口是25。…

游戏思考26:使用EASTL配合共享内存做自定义STL(未完待续12/27)

文章目录一、前置学习1&#xff09;萃取&#xff08;1&#xff09;迭代器所指对象的类型-value_type<1>第一个限制-返回参数需要指明迭代器的value_type<2>第二个限制坑点-不是所有迭代器都是class type&#xff0c;原生指针就不是<3>第三个限制坑点-如果针对…

2022-12版本的Rstudio它来了,它喊我升级了

1. Rstudio喊我升级 最近每一次打开Rstudio&#xff0c;总是推送给我最新版的Rstudio&#xff1a; 它之前不是这样的&#xff0c;那时候它所在的公司还叫Rstudio&#xff0c;现在改名叫Posit了&#xff0c;就开始推送了&#xff0c;也许它认为是重大的更新&#xff0c;也许他能…

【vue面试题-vuex】

vuex1.vuex是什么&#xff1f;怎么使用&#xff1f;哪种功能场景使用它&#xff1f;2.vuex有哪几种属性&#xff1f;3.Vue.js中ajax请求代码应该写在组件的methods中还是vuex的actions中&#xff1f;4.Vuex解决了什么问题&#xff1f;5.Vuex中状态储存在哪里&#xff0c;怎么改…

【LeetCode】1739. 放置盒子

1739. 放置盒子 题目描述 有一个立方体房间&#xff0c;其长度、宽度和高度都等于 n 个单位。请你在房间里放置 n 个盒子&#xff0c;每个盒子都是一个单位边长的立方体。放置规则如下&#xff1a; 你可以把盒子放在地板上的任何地方。 如果盒子 x 需要放置在盒子 y 的顶部&…

【webpack】cjs运行时分析

准备工作&#xff08;接上篇文章的示例也可以&#xff09;&#xff1a; 1. 在index.js文件中引入任一js文件 import sum from ./sum;const result sum(1,2); console.log(result);2. sum文件 const sum (a, b) > {return ab; }export default sum3. build.js文件 const…

离子交换法深度剖析

离子交换法 是一种借助于离子交换剂上的离子和污水中的离子进行交换反应而除去污水中有害离子的方法。 离子交换法的特点 离子交换过程是一种特殊的吸附过程&#xff0c;在许多方面与吸附过程类似。 与吸附法比较&#xff0c;其特点是:它主要吸附污水中的离子化物质&#xff…

怎样做一个不会被淘汰的车载诊断工程师

步入中年&#xff0c;不可避免会接触到所谓的中年危机&#xff0c;时刻在提醒自己提高自己的护城河&#xff0c;增强核心竞争力。但是这种事情也不是靠空想&#xff0c;还是要功夫下在平时。 自己是在2016年开始接触车载诊断方面&#xff0c;从事过诊断范畴的开发、测试、偏系…

程序员的圣诞节是怎么样的?

2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ 一、前言 圣诞节&#xff0c;先在这里祝大家圣诞节快乐~~&#xff0c;用英语来表达就是 Merry Christmas ~~&#xff0c; 为了贴合这个氛围&#xff0c;今天分享种用 Python 绘制圣诞树的方法。 最近用代码绘画圣诞…

非常易用的网络路径中的网络延迟测试和监控以及自动发送报告工具

非常易用的网络路径中的网络延迟测试和监控以及自动发送报告工具。 作为网络管理员或网络工程师&#xff0c;时刻关注网络的交付速度至关重要。不仅需要确保自己有良好的响应时间&#xff0c;还需要确保网络的速度足以满足用户通信所需的每一条路径。而手动测试每个路径将占用…

SpringBoot+Vue项目医院体检中心管理系统

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

电脑文件数据恢复方法是什么?未备份电脑文件数据恢复的七种方法

在日常生活中&#xff0c;我们总会遇到这样或那样的事情&#xff0c;比如在使用电脑过程中出现文件数据丢失情况&#xff0c;那么在未备份文件下电脑文件数据丢失怎么恢复&#xff1f;电脑文件数据恢复方法有哪些&#xff1f;这里将根据不同情况分享不同的电脑文件数据恢复方法…

L05_课后练习_波士顿房价预测

波士顿房价预测 1.导入所需要的库 import numpy as np import pandas as pd import matplotlib.pyplot as plt import torch import random from sklearn.model_selection import train_test_split2.读入数据 feature pd.read_csv("../data/boston.csv") feature…

Postgresql源码(95)优化器关键数据结构实例

1 测试数据 drop table student; create table student(sno int primary key, sname varchar(10), ssex int); insert into student values(1, stu1, 0); insert into student values(2, stu2, 1); insert into student values(3, stu3, 1); insert into student values(4, st…

Linux的环境变量

目录 什么是环境变量&#xff1f; 那么如何添加自己的程序到命令行上&#xff0c;可以直接执行&#xff1f; 如何查看环境变量&#xff1f; 如何定义环境变量&#xff1f; C语言如何获取环境变量&#xff1f; 什么是环境变量&#xff1f; 在回答这个问题之前&#xff0c;可…

【Linux】之systemd与systemctl

文章目录一、systemd1. systemd 守护进程管理 Linux 的启动2. systemd 提供的功能:3. systemd 使用单元来管理不同类型的对象。4. 服务单元信息二、systemctl1. systemctl输出中的服务状态2. 列出servera上安装的所以服务单元3. 列出servera上所有活动和不活动的套接字单元4.1 …

存档鉴未来,新时代电子档案长期保存之道

&#xff08;一&#xff09;电子档案单套制是未来档案管理的趋势 在政府和企业端&#xff0c;办公体系的信息化&#xff0c;电子档案的单套制实施&#xff0c;极大地提高了事务办理的效率&#xff0c;同时节约了大量纸质文件的使用成本。 在政务领域&#xff0c;单套制的推行…

Day840.原子类-Java 并发编程实战

原子类 Hi&#xff0c;我是阿昌&#xff0c;今天学习记录的是关于原子类。 一个累加器的例子&#xff0c;示例代码如下&#xff1a; 在这个例子中&#xff0c;add10K() 这个方法不是线程安全的&#xff0c;问题就出在变量 count 的可见性和 count1 的原子性上。 可见性问题…

Java7的异常处理新特性addSuppressed()方法

学习使用Java7新语法try-with-resources&#xff0c;在查看编译文件时&#xff0c;接触到addSuppressed()方法。记录一下使用方式。 先来看一段代码&#xff1a; private static void testt() {try (InputStream is CatchTest.class.getClassLoader().getResourceAsStream(&…