【C++ Primer Plus】学习笔记1


前言

一直没系统学过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 again
	cout <<"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库函数。要使用库函数,应当包含提供该函数原型的头文件。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值