02.C++概述

2.1 HelloWorld
 
//HelloWorld.cpp
#include <iostream>                 //包含头文件
int main()                          //函数头
{
    using namespace std;            //编译指令
    cout << "Hello World!" << endl; //输出语句
    return 0;                       //返回语句
}
 
//               单行注释,编译器忽略//及后面的内容
#include:        预处理指令
int main():      函数头
using namespace: 编译指令
{}:              函数体由{}括起来
cout:            C++中使用cout操作符进行显示输出
retun            结束函数的执行
 
注:C++严格区分大小写字母。
 
2.1.1 main()函数
 
int main()
{
    statements
    return 0;
}
 
上述代码描述了一个名为main()函数的行为,构成了函数定义(function definition)
函数函数定义有两部分组成:
int main()一行叫作函数头(function heading){}中包括的部分叫函数体。
函数头描述了函数与其他函数之间的调用接口。函数描述了函数在工作过程中具体调用的计算机指令。
每一台完整的指令都称为语句,所有的语句都以分号结束。
 
1.作接口的函数头
函数头描述了和调用者(函数)之间的通信接口。位于函数名前面的部分称为返回值类型,描述了返回给调用者的数据。
函数名后面(括号中)的部分叫形参列表(argument list)或参数列表(parameter list)描述了调用者传递给函数的数据。
 
注:通常main()函数被启动代码调用,启动代码由编译器添加到程序中,启动代码是程序与操作系统之间的桥梁。main()函数描述程序和操作系统之间的调用接口。
 
在C语言中省略类型相当于返回int类型,参数列表为空表示函数对是否接受参数保持默认。
在C++中参数列表为空表示函数不接受任何参数。
ANSI/ISO C++标准规定,如果编译到达main()函数末尾时没有碰到返回语句,则认为main()函数以 return 0; 结尾(注:该规定只适用于main()函数)
 
2.入口函数
C/C++程序运行时,通常从main()函数开始执行。
存在一些例外情况:Windows下编写DLL动态链接库时,由于DLL不是独立的应用程序,因此不需要main()函数。...
 
2.1.2 注释
C++注释以双斜线(//)开始,注释是程序员为读者提供的说明,对程序进行解释说明。编译器忽略注释内容。
C++注释以//开始到行尾结束,可单独位于一行,也可独立位于一行。
C++继承了C语言的注释,C语言的注释内容包含在/*和*/之间。C风格注释可跨越多行。C99标准中也添加了//单行注释
 
2.1.3 C++预处理器和iostream文件
如果程序要使用C++工具输入或输出,需要如下两行代码:
#include <iostream>
using namepsace std;
 
c/c++编译器在编译源代码之前,自动调用预处理器对源码文件进行预处理,处理以#开头的预处理指令将iostream文件中的内容添加到程序中。
为什么要将iostream文件中的内容添加到程序中?
iostream中的io指的是输入(进入程序中的数据)和输出(从程序中发送出去的数据),C++输入/输出涉及到iostream文件中的多个定义。
为了使用cout输出信息,HelloWorld程序需要iostream文件中的定义。#include将头文件所在的位置替换为iostream文件中的内容,产生一个新的混合文件,供编译器编译。
 
2.1.4 头文件
由于iostream被包含在HelloWorld.cpp文件,叫做包含文件(include file),因为被包含在其他文件的起始处,也叫头文件(header file).
C语言中以.h作为文件扩展名。C++头文件没有扩展名,将部分C语言头文件转成C++风格(去掉扩展名.h,在文件名前添加c,表示来自C语言).
 
头文件命名约定 
头文件类型		约定				示例		说明
C++旧风格		.h结尾			iostream.h	C++程序可使用
C旧式风格		.h结尾			math.h		C/C++可使用		
C++新风格		没有扩展名			iostream	C++可使用,使用namespace std
转换后的C		加前缀c,没有扩展名	cmath		C++程序可使用,可以使用不是C的特性,如namespace std
 
 
2.1.5 名称空间
编写引用了多个厂商提供的源码的大型项目时,使用名称空间可以有效地避免命名冲突。
一个潜在的问题,Microflp Industries公司和Piscine公司分别提供了名为wanda()的函数,使用wanda()函数时编译器将不知道具体要使用哪个版本,
Microflp Industries公司将wanda()函数定义在Microflp名称空间,此时wanda()函数的完整名称为Microflp::wanda(),则Piscine公司将wanda()函数放到Piscine名称空间中,完整名称为Piscine::wanda()
这样我们在使用两个厂商的代码时就可以将其区分开。
Microflp::wanda("Hello");
Piscine::wanda("你好");
 
cout和endl分别被定义在iostream头文件中。也就是说cout的完整名称为std::cout,endl的完整名称为std::endl。
 
使用名称空间中的组件:
 
//1.使用名称空间前缀
std::cout << "Helo" << std::end;
 
//2.使用using编译指令
using namespace std;
cout << "Hello" << endl;
 
//3.使用using编译指令
using std::cout;
using std::endl;
cout << "Hello" << endl;
 
2.1.6 使用cout进行输出
在C/C++中使用双引号括起来的一系列字符叫作字符串。
<<表示把字符串发送给cout,<<符号指出了数据流动的路径。
cout是一个预定义的对象,可以显示字符串,数字或字符。
输出是一个流,即从程序流出的一系列字符。
cout对象表示输出流,定义在iostream文件中,cout对象属性包括一个插入运算符(<<),可以将右侧的数据插入到输出流中。
 
注:通过重载,同一个运算符将有不同的含义,编译器通过上下文来确定运算符的含义。
 
1.控制符
cout << endl;
endl是一个特殊的C++符号,表示重起一行。在输出流插入endl将导致屏幕光标移到下一行的开头。诸如endl等对cout具有特殊含义的符号称为控制符(manipulator)
 
:
	std::cout << "Hello World" << std::endl;
 
 
2.换行符
'\n'被视为一个字符,叫作换行符,继承自C语言。
 
:
	std::cout << "Hello World\n";
 
endl和'\n'的区别:
endl确保在程序执行到endl时刷新输出(立刻将内容显示到屏幕上),'\n'不提供这样的保证。
 
2.1.7 C++源码格式化
 
1.标记和空白 
一行代码中不可分割的元素叫标记(token),通常使用空格、制表符、或回车将两个标记分开。
空格、制表符、回车统称为空白(white space)。有些符号(括号、逗号)不需要空白分隔。
 
2.C++源代码风格
每条语句占一行。
每个函数的开始花括号和结束花括号分别各占一行。
函数中的语句相对于花括号进行缩进。
与函数名相关的圆括号周围没有空白。


2.2.1 声明语句和变量
若要将数据存储在计算中,必须必须指定数据存储的位置和内存空间,并对该空间命名。
在C++中使用声明语句指出存储类型并提供位置标签。
int carrot; 指出了存储数据所需要的内存及内存单元的名称。
int 类型用于存储整数,即没有小数点的数值,可以是正整数,也可以是负整数。
carrot称为变量,因为其值可以修改。在C++中所有变量在使用前必须声明。

声明变量不分配内存空间,定义变量分配内存空间。
C++变量声明不必在函数的起始位置,推荐在首次使用的位置进行声明。

2.2.2 赋值语句
赋值语句将数值保存到内存空间中,如int carrot = 25;表示将数值25,保存到carrot变量中。
= 叫作赋值运算符。C/C++可以连续使用赋值运算符。
int a;
int b;
int c;
a = b = c = 100; 
赋值操作从右向左进行。

carrots = carrots - 1;表明或以对变量的值进行修改。
赋值运算符的右面carrots - 1是一个算术表达式,计算机将carrots中的25减掉1得到24,赋值运算符将24重新保存到carrots变量中。

2.2.3 cout新花样
cout << carrots;将存储在carrots中的整数值,即25。
cout可以用于打印字符串,也可用于打印整数。这一特性源于C++面向对象特性。
C++插入运算符(<<)根据后面的数据类型调整所调用的函数。







//未完待续.....


 
 

                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飞天遇见妞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值