yo!这里是c++入门必备

目录

前言

知识点

指针空值

c++输入输出

引用

缺省参数

函数重载

auto

范围for循环

后记


前言

        在学完c语言之后,很多小伙伴想要进攻c++领域,但是不知道如何巧妙且得当的过渡过去,在看到一段c++代码后,会发出这样的疑问,cin、cout是啥?&不是取地址符号嘛?咋两个函数名一样也可以正常编译通过呢?定义函数时怎么可以直接初始化形参列表的变量? ......

        那么,想过渡到c++,又不知道从何下手,可以看看下面本笔者为大家准备的c++入门必备知识点,对家成功进军c++领域或许有些帮助。

知识点

  • 指针空值

        我们知道,在c语言中,定义一个指针变量,必须初始化,但是不知道该初始化为啥时,就会把它置为空,eg:int* ptr=NULL;这里的NULL在c中被定义为0(#define NULL 0),这样就很不合理,因为0属于整数(int),而等号左边是个指针变量,所以c++引进nullptr表示指针空值,nullptr被定义为((void*)0),即将整数0强转成一个空指针变量。

 eg:

int* ptr = nullptr;
  • c++输入输出

        在c中,加入头文件<stdio.h>,就可以使用scanf、printf函数完成输入输出,在c++中,加入头文件<iostream>,可以使用cin、cout这样的流对象,此外endl是特殊的c++符号,表示c中的换行符('\n'),用来换行,<<和>>是特殊的运算符。

        而且,不需要像c那样%d、%c指定类型输出,cin、cout可以自动识别类型。

eg:

int a = 0;
cin >> a;// 输入10
cout << "a=" << a << endl;//a=10
  • 引用

        对于引用(&)这个概念,想必在学习c++之前就听闻其名,实际上引用就是为变量起别名,不是新定义了一个变量,也不是额外开辟了空间,而是与被引用的变量共用一块地址空间。

注意:1.引用在定义时必须初始化

           2.一个变量可以有多个引用,即可以有多个别名

           3.初始化之后不能再更改,即引用了一个变量之后,必能再引用其他变量

           4.引用类型必须与被引用变量类型相等

 eg:

int a = 10;
int& b = a;
cout << a << endl;   //10
cout << b << endl;   //10

b = 20;
cout << a << endl;   //20
cout << b << endl;   //20

用处:

1)传参

        在c中,我们知道有传值调用和传址调用两种方法,传值调用只是对变量的一份临时拷贝,形参的改变不影响实参,传址调用是传变量的地址过去,形参的改变影响实参,在c++中,可以使用引用的方法,因为引用变量是与被引用变量共用一块地址,所以用引用传参,也能实现形参的改变影响实参。

eg:

void Swap(int& x, int& y)
{
	int tmp = x;
	x = y;
	y = tmp;
}

int main()
{
	int a = 10;
	int b = 20;
	Swap(a, b);
	cout << a << endl;   //20
	cout << b << endl;   //10

	return 0;
}

2)作为返回值

        在一个函数中,需要返回的变量也可以通过引用传回来,但是值得注意的是,一定是返回不会销毁回收的变量,比如,有static修饰的静态变量、数组中的元素,就像在c中不能从函数返回一个函数结束就销毁的地址。 

eg:

int& find(int arr[], int pos)   //pos为所查找元素的下标
{
	return arr[pos];
}

int main()
{
	int arr[] = { 1,2,3,4,5 };
	
	find(arr, 1)++;
	find(arr, 2) += 8;
	find(arr, 3) *= 3;

	//打印数组元素
	for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
		cout << arr[i] << " " << endl;
	cout << endl;   //结果为1 3 11 12 5

	return 0;
}
  • 缺省参数

        缺省参数就是在定义函数时,为参数列表的参数指定一个缺省值,如果调用函数时指定了实参,就用实参的值,否则就用缺省值。

注意:

        1.缺省参数必须从右向左依次给出,不能跳着给,eg:void func(int a,int b=10,int c=20){ ... }(正确),void func(int a=10 ,int b, int c=20){ ... }(错误)

        2.调用含缺省参数的函数时,实参列表必须从左向右给出,eg:func(1,2)中1是a的形参,2是b的形参,c没有实参,使用缺省值。

        3.缺省参数不能在函数声明和函数定义同时出现,建议在声明中缺省,如果声明中没缺省,定义中缺省了,缺省值不起作用

eg:

void func(int a = 10)
{
	cout << a << endl;
}

int main()
{
	func();   //10
	func(20);   //20

	return 0;
}
  • 函数重载

        在c++中,对于同一个作用域,可以出现同名函数,但是这些同名函数的形参列表的参数个数、类型或者类型顺序不同。

注意:函数重载针对于形参列表,返回值不同不构成重载

意义:使用一个函数名实现多种相似功能,在调用时很方便,不用考虑因为传入参数列表不同来选择使用哪个函数。

eg:

int Add(int x, int y)
{
	return x + y;
}
double Add(double x, double y)
{
	return x + y;
}

int main()
{
	int a = 10, b = 20;
	double c = 10.1, d = 20.2;

	cout << Add(a, b) << endl;   //30
	cout << Add(c, d) << endl;   //30.3

	return 0;
}
  • auto

        面对大量复杂且多的类型,c++引入auto根据初始化表达式来推导变量类型,所以使用auto时必须初始化,在编译时期编译器会将auto替换成变量实际点的类型。

注意:

        1.auto与指针或者引用结合起来使用,eg:int a=10; auto* b=&a是强调b是个指针变量

        2.使用auto在同一行定义多个变量时,所有变量必须是同一种类型,否则会报错,eg:auto a=10,b=20;(正确);auto c=10,d=20.2;(报错)

        3.auto不能作为函数参数,eg:void test(auto a);(错误)

        4.quto不能用来声明数组,eg:auto arr[]={1,2};(错误)

eg:

auto a = 10;
auto b = 3.14;
cout << typeid(a).name() << endl;   //int
cout << typeid(b).name() << endl;   //double
  • 范围for循环

        在一个有范围的集合之中,比如一个数组,可以使用范围for循环来遍历其中的元素,语法:for(范围内用于迭代的变量 :被迭代的范围){ ... }

注意:范围for循环的范围必须是确定的,eg:void func(int arr[]) { for(int i : arr) { ... } }(错误),因为函数中的arr只是元素首地址,数组范围并不明确

eg:

int main()
{
	int arr[] = { 1,2,3,4,5 };
	for (int i : arr)
	{
		cout << i << " ";
	}
	cout << endl;

	return 0;
}

后记

        从这么几点可以看出,c++很多地方是在为c语言填坑,但是c++语法又兼容c语法,只不过一些地方做出了优化,在了解到这几点之后应该就可以比较轻松的入门c++了,如果你认为还需要什么必备知识点,可以在评论区写出来,大家一起讨论哦!

猜你喜欢

转载自blog.csdn.net/phangx/article/details/131616622
今日推荐