C++入门,初篇

Posted 别碰我的宏定义

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++入门,初篇相关的知识,希望对你有一定的参考价值。

文章目录


前言

提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、C++关键字

1.C++发展至今,已经有C++98,C++11和C++17这几个主流版本。在C++98中总共有63个关键字,其中有32个是从C语言中继承过来的。

在后来的C++11和C++17又增加了几个关键字,等学到了再补充。

二、命名空间

1.std空间

namespace std库标准命名空间,包括C++标准库中的所有表示符

#include<iostream>
using namespace std;
int main()

	cout << "hello world" << endl;

//比如里面用到的cout和endl就属于std库中,你如果不声明使用std库的话,就需要用
//作用域限定符(::)声明引入。
#include<iostream>
int main()

	std::cout << "hello world" << std::endl;

2.其他自己定义的空间

你也可以自己定义属于自己的命名空间来实现你需要的功能

#include<iostream>
namespace myspace

	int a = 100;
	int b = 300;
	int Add(int a, int b)
	
		return a + b;
	
	void print()
	
		std::cout <<"Add(a, b) "<< Add(a, b) << std::endl;
	

using namespace myspace;
int main()

	myspace::print(); //用作用域限定符说明调用的是myspace空间里的print函数
	print(); //直接用using namespace关键字引入
	return 0;

一个新的作用域就相当于一个新的命名空间,作用就是把你定义的函数和变量和别人定义的分隔开。

三、C++输入输出

C有自己的输入和输出,C++也有自己的输入输出。

#include<stdio.h>
int main()

	printf("hello world\\n");
	return 0;

#include<stdio.h>
int main()

	char s[13];
	scanf("%s", s);
	printf("%s\\n",s);
	return 0;

C语言对于输出输入有较高的格式输出要求,就是你在输出时必须声明他是以何种格式输出的,否则他就会报错或者认为你需要输入的就是你屏幕上的一个字符串。
C++在对C的输入输出继承的情况下,重写了输入输出,对于输出输入格式没有要求,在输入自定义类型时,需要你将输入和输出运算符重载。

#include<iostream>
using namespace std;
int main()

	int a;
	float b;
	cin >> a >> b;
	cout << "a = " << a << endl;
	cout << "b = " << b << endl;

四、C++中的缺省参数

1.C++缺省参数的意义

缺省参数又叫备胎参数,意思是你不给他参数时,为他设置一个随意参数,不至于让他输出乱码或者特别离谱的值。

#include<iostream>
using namespace std;
void test(int a = 0)

	cout << "a = " << a << endl;

int main()

	test();//在不传时,他就会使用缺省参数
	test(10);//传参时,使用时指定的实参
	return 0;

2.C++缺省参数的分类

全缺省参数从左到右依次全部给出

#include<iostream>
using namespace std;
void test(int a = 0,int b = 0,int c =0)

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

int main()

	test();
	test(10,20,30);
	return 0;


半缺省,从右往左依次只给出部分参数,在传入参数时,需要注意讲你没有给定缺省参数的那几个参数给定常量。

#include<iostream>
using namespace std;
void test(int a ,int b = 0,int c =0)

	cout << "a = " << a << endl;
	cout << "b = " << b << endl;
	cout << "c = " << c << endl;

int main()

	test(1);//你对b和c都给了缺省参数,但是a没有缺省参数,你需要传入a的值
	test(10,20,30);//你传入三个值,则不使用你给定的缺省参数。
	return 0;

缺省参数不能在定义和声明中同时出现,如果同时出现,编译器就无法确定到底那个参数被使用,就会报错。缺省参数必须是常量或者是全局变量。

五、C++中的函数重载

1.函数重载的定义

函数重载:在同一个作用域下声明几个功能相似的同名函数,这些同名函数的形参列表(参数类型,参数个数,参数次序)必须不同,用来处理功能相似但是数据类型不同的问题。(可以用模板类来实现)


调用同一个函数实现不同数据的类型求和。

2.函数重载的实现

六、C++中的引用

1.引用的实现

引用不是新定义一个变量,而是给已经存在的变量取一个别名,编译器不会为指针新开辟空间,他和他的引用变量使用同一块内存空间。
引用的使用特性:
1.引用在定义时必须初始化,
2.一个变量可以有多个引用,但是一个引用只能引用一个实体,且是他的整个生命周期。

#include<iostream>
using namespace std;
int main()

	int a = 10;
	int& b = a; //b的存在时间是整个函数,且只能是实体a的引用
	cout << b << endl;

引用可以作为返回值,或者参数参入,因为传引用时不会调用构造函数产生新的变量,而你再传值时需要开辟空间去构造变量,从而传引用大大缩减了函数执行时间,也在一定程度上节省了空间,满足C++语言高效的要求。

2.引用和指针的比较

#include<iostream>
using namespace std;
int main()

	int a = 10;
	int& b = a;
	int* c;
	c = &a;
	cout << b << endl;
	cout <<*c << endl;
	return 0;

在C++中,引用的底层就是用指针来实现的,引用是对实体取别名,之所以可以实现是因为在定义引用时会开辟底层空间来存储所指向变量的地址的。
引用和指针的比较:
1.引用在定义的时候就需要初始化,指针的话没有要求必须初始化,就是你可以指向空,也可以不给,也可以指向一个对象。
2.引用在初始化之后,他就不能再去引用别的对象了,指针的话可以指向同种类型的别的对象。
3.存在空指针,但是不存在空引用
4.在测量长度的时候,引用的大小是其指向实体的大小,而指针的大小永远是寻址范围的大小,(32位下为4字节长度,64位下为8字节长度)。
5.存在多级的指针,但是只存在一级的引用。
6.访问实体空间,引用的话直接是编译器处理,指针需要你对其进行解引用。
7.引用比指针安全,指针存在野指针,但是引用的话,不存在野引用。

六、内联函数

以inline修饰的函数叫做内联函数,编译时C++编译器会调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。

总结

这些就是今天额学到的东西。

以上是关于C++入门,初篇的主要内容,如果未能解决你的问题,请参考以下文章

C++入门,初篇

黑马程序员 C++教程从0到1入门编程笔记3C++核心编程(内存分区模型引用函数提高)

C++入门篇之内存处理

C++入门篇之内存处理

[C++] 内联函数inline 以及 auto关键字 -- C++入门

C++ 动态内存开辟