文章目录
- 前言
- 一、预备知识
- 二、基本语法
- 1.main函数
- 2.有返回值的函数
- C++程序应当为程序中使用的每个函数提供原型
- 3.自定义函数
- 总结
前言
一直没系统学过C++,最近接触了一段时间Java发现还是不太喜欢,所以转向C++开发了qaq。因为学过C语言不算零基础了,所以很多语法解释会跳过,重点是C语言中没有的部分。加油ヾ(◍°∇°◍)ノ゙
一、预备知识
源代码:程序员编写的代码(也就是我们所学习的代码)
目标代码:经过编译器翻译后得到的代码,是cpu可以读懂的代码
启动代码:函数的入口,main函数就是通过启动代码启动的,通过链接程序加载进来的
库代码:调用的功能函数,通过链接程序加载进来
二、基本语法
1.main函数
代码如下(示例):
#include<iostream>int main(void)
{using namespace std;int abc;cin>>abc;//cout<< "hello world!" <<endl;return 0;
}
C++中所有变量使用前都必须声明;
//是c++中的注释符,也可以使用/…/ ;
输入使用cin,输出使用cout,使用前必须先声明using namespace std; ,同时也可以用C语言中的printf和scanf表示输出输入。
using 是一个声明,还有一种用法是指定使用哪一个名称,例如
using std::cin;
using std::cout;
using std::endl;
另一种使用方法
std::cout << "abc" << std::endl;
2.有返回值的函数
代码如下(示例):
x = sqrt(7);
C++程序应当为程序中使用的每个函数提供原型
函数原型之于函数就像变量声明之于变量——指出涉及的类型。例如,C++库将sqrt()函数定义成将一个(可能)带小数部分的数字(如6.25)作为参数,并返回一个相同类型的数字。有些语言将这种数字称为实数,但是C++将这种类型称为double。sqrt()的函数原型像这样:
double sqrt(double); //function prototype
第一个 double 意味着sqrt()将返回一个 double 值。括号中的 double 意味着 sqrt()需要一个 double 参数。因此该原型对 sqrt()的描述和下面代码中使用的函数相同:
double x;// declare x as a type double variable
x= sqrt(6.25);
原型结尾的分号表明它是一条语句,这使得它是一个原型,而不是函数头。如果省略分号,编译器将把这行代码解释为一个函数头,并要求接着提供定义该函数的函数体。
在程序中使用 sqrt()时,也必须提供原型。可以用两种方法来实现:
1.在源代码文件中输入函数原型;
2.包含头文件cmath,其中定义了原型。
第二种方法更好,因为头文件更有可能使原型正确。对于C++库中的每个函数,都在一个或多个头文件中提供了其原型。请通过手册或在线帮助查看函数描述来确定应使用哪个头文件。例如,sqrt()函数的说明将指出,应使用cmath 头文件。
不要混淆函数原型和函数定义。可以看出,原型只描述函数接口。也就是说,它描述的是发送给函数的信息和返回的信息。而定义中包含了函数的代码,如计算平方根的代码。C和C++将库函数的这两项特性(原型和定义)分开了。库文件中包含了函数的编译代码,而头文件中则包含了原型。应在首次使用函数之前提供其原型。通常的做法是把原型放到main()函数定义的前面,如下
#include<cmath>
#include<iostream>
int main(void)
{using namespace std;double abc;cin>>abc;double ans;ans = sqrt(abc);cout<< ans <<endl;return 0;
}
3.自定义函数
前面已经使用过好几个用户定义的函数,它们都叫main()。每个C++程序都必须有一个 main()函数,用户必须对它进行定义。假设需要添加另一个用户定义的函数,和库函数一样,也可以通过函数名来调用用户定义的函数。对于库函数,在使用之前必须提供其原型,通常把原型放到 main()定义之前。而自定义函数必须提供新函数的源代码。最简单的方法是,将代码放在main()的后面。
#include <iostream>
void simon(int);//function prototype for simon()
int main()
{using namespace std;// call the simon()functionsimon(3);cout <<"Pick an integer:";int count;cin >>count;simon(count);//call it againcout <<"Done!"<< endl;return 0;
}
void simon(int n)//define the simon()function
{using namespace std;cout <<"Simon says touch your toes "<<n << " times." << endl;
}//void functions don't need return statements
总结
C++程序由一个或多个被称为函数的模块组成。程序从main()函数(全部小写)开始执行,因此该函数必不可少。函数由函数头和函数体组成。函数头指出函数的返回值(如果有的话)的类型和函数期望通过参数传递给它的信息的类型。函数体由一系列位于花括号()中的C++语句组成。有多种类型的C++语句,包括下述6种。
- 声明语句:定义函数中使用的变量的名称和类型。
- 赋值语句:使用赋值运算符(=)给变量赋值。
- 消息语句:将消息发送给对象,激发某种行动。
- 函数调用:执行函数。被调用的函数执行完毕后,程序返回到函数调用语句后面的语句。
- 函数原型:声明函数的返回类型、函数接受的参数数量和类型。
- 返回语句:将一个值从被调用的函数那里返回到调用函数中。
类是用户定义的数据类型规范,它详细描述了如何表示信息以及可对数据执行的操作。对象是根据类规范创建的实体,就像简单变量是根据数据类型描述创建的实体一样。C++提供了两个用于处理输入和输出的预定义对象(cin和cout),它们是istream 和 ostream 类的实例。这两个类是在 iostream 文件中定义的。为 ostream 类定义的插入运算符(<<)使得将数据插入到输出流成为可能;为istream 类定义的抽取运算符(>>)能够从输入流中抽取信息。cin 和 cout 都是智能对象,能够根据程序上下文自动将信息从一种形式转换为另一种形式。
C++可以使用大量的C库函数。要使用库函数,应当包含提供该函数原型的头文件。