C++入门

本文介绍了C++中内联函数的概念及其与宏函数的区别,强调了内联函数的优点和编译器如何处理inline。同时讲解了auto关键字的用法,包括类型推导、引用和范围for在循环中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

大家好鸭

上期我们谈论了C++的一些入门知识

这里接上期继续讲讲C++入门,没有看上期的同学可以看看上期

上期文章

内联函数

相信大家在学习C语言的时候接触过,宏函数这个概念

比如我们可以写一个简单的宏函数,如下

#define ADD(x, y) ((x)+(y))

int main()
{
  printf("%d\n", ADD(1, 2));
  return 0;
}

像这样就是简单的使用宏函数

宏函数有以下优缺点

缺点

  1. 容易写错,语法坑多
  2. 不能调试
  3. 没有类型安全的检查

优点

  1. 没有严格的类型限制
  2. 不需要建立函数栈帧,减少开销

在C++中引入了内联函数取代了宏函数的功能

内联函数是指使用inline修饰的函数

inline int add(int a, int b)//内联函数
{
	return a + b;
}
int add(int a, int b)//普通函数
{
	return a + b;
}

内联函数会在调用的地方展开,替换函数调用

但内联函数对于编译器只是一种建议,当函数是一个递归函数或者是一个比较长的函数时,编译器会忽略inline修饰,当作正常函数处理

auto关键字

当变量类型过长的情况下,可以使用auto接收值或者变量,auto可以自动推导变量类型

例如

int main()
{
	int a = 10;
	auto b = a;//此时会自动推导b为int类型
	auto c = 10.0;//此时会自动推导c为double类型
}

当auto作为引用时还是要加&

int main()
{
	int a = 10;
	auto& b = a;
}
当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译
器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。

int main()
{
	auto b = 10,c=10.2;//该行会报错
}

还有两点需要注意

  1. 不能作为函数参数
  2. 不能用来声明数组
void add(auto a)//错误示范
{

}
int main()
{
	auto a[] = { 1,2,3 };
}

auto更多的应用场景是结合接下来要讲的范围for一起使用

范围for

for循环后的括号由冒号“ :”分为两部分:第一部分是范围内用于迭代的变量,第二部分则表示被迭代的范围。
int main()
{
	int a[] = { 1,2,3,4,5,6 };
	for (auto b : a)
	{
		cout << b << " " ;
	}
}

像这样使用

auto b在for循环中用与依次接受a数组中的值,循环内将b打印出来

这里当a数组的类型发生变化时,auto b是不需要改变的,b的类型会根据a数组类型变化而变化

我们还可以通过auto引用来改变a中的值

int main()
{
	int a[] = { 1,2,3,4,5,6 };
	for (auto& b : a)
	{
		b = b * 2;
		cout << b << " " ;
	}
}

另外还有3个要注意的点

  1. 范围for也可以正常的使用break,continue
  2. 范围for迭代的范围必须是确定的
  3. 范围for迭代的对象要实现++和==的操作

C++入门的一些知识就介绍到这里,本篇完

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值