数组
C++ 支持数组数据结构,它可以存储一个固定大小的相同类型元素的顺序集合。数组是用来存储一系列数据,但它往往被认为是一系列相同类型的变量。
一维数组
声明数组
//数据类型 数组名[数组长度] = {值1,值2};
type arrayName [ arraySize ];
double balance[10];
初始化数组
数据类型 数组名[数组长度] = {值1,值2};
double balance[5] = {1000.0, 2.0, 3.4, 7.0, 50.0};
数组的访问
for ( int i = 0; i < 5; i++ )
{
cout << balance[i] << endl;
}
int arr[5];
cout << "数组中元素个数为:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "数组首地址:" <<(int)arr << endl;
cout << "数组中第一个元素地址:" <<(int)&arr[0] << endl;
二维数组
声明数组
//数据类型 数组名[行数][列数];
int arra[2][3] =;
初始化数组
int arra[2][3] = { {1,2,3},{4,5,6} };
数组的访问
int arra[2][3] = { {1,2,3},{4,5,6} };
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++)
{
cout << arra[i][j] << endl;
}
}
函数
函数是一组一起执行一个任务的语句。每个 C++ 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。
函数的定义
return_type function_name( parameter list )
{
body of the function
}
- return_type:返回类型一个函数可以返回一个值。return_type 是函数返回的值的数据类型。有些函数执行所需的操作而不返回值,在这种情况下,return_type 是关键字 void。
- function_name:函数名称,这是函数的实际名称。函数名和参数列表一起构成了函数签名。
- parameter list:参数就像是占位符。当函数被调用时,您向参数传递一个值,这个值被称为实际参数。参数列表包括函数参数的类型、顺序、数量。参数是可选的,也就是说,函数可能不包含参数。
- body of the function:函数主体包含一组定义函数执行任务的语句。
#include "Swap.h"
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
}
函数声明
函数的声明可以多次,但是函数的定义只能有一次。函数要放在main()方法之上,或者是在main()方法之上提前进行声明.
void swap(int a, int b);
函数调用
// 函数声明
int max(int num1, int num2);
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
int ret;
// 调用函数来获取最大值
ret = max(a, b);
cout << "Max value is : " << ret << endl;
return 0;
}
// 函数返回两个数中较大的那个数
int max(int num1, int num2)
{
// 局部变量声明
int result;
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
函数参数
传值调用
向函数传递参数的传值调用方法,把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。
// 函数定义
void swap(int x, int y)
{
int temp;
temp = x; /* 保存 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
// 调用函数来交换值
swap(a, b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
//交换前,a 的值: 100
//交换前,b 的值: 200
//交换后,a 的值: 100
//交换后,b 的值: 200
指针调用
向函数传递参数的指针调用方法,把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
// 函数定义
void swap(int *x, int *y)
{
int temp;
temp = *x; /* 保存地址 x 的值 */
*x = *y; /* 把 y 赋值给 x */
*y = temp; /* 把 x 赋值给 y */
return;
}
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值
* &a 表示指向 a 的指针,即变量 a 的地址
* &b 表示指向 b 的指针,即变量 b 的地址
*/
swap(&a, &b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
//交换前,a 的值: 100
//交换前,b 的值: 200
//交换后,a 的值: 200
//交换后,b 的值: 100
引用调用
向函数传递参数的引用调用方法,把引用的地址复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
// 函数定义
void swap(int &x, int &y)
{
int temp;
temp = x; /* 保存地址 x 的值 */
x = y; /* 把 y 赋值给 x */
y = temp; /* 把 x 赋值给 y */
return;
}
int main ()
{
// 局部变量声明
int a = 100;
int b = 200;
cout << "交换前,a 的值:" << a << endl;
cout << "交换前,b 的值:" << b << endl;
/* 调用函数来交换值 */
swap(a, b);
cout << "交换后,a 的值:" << a << endl;
cout << "交换后,b 的值:" << b << endl;
return 0;
}
//交换前,a 的值: 100
//交换前,b 的值: 200
//交换后,a 的值: 200
//交换后,b 的值: 100
函数默认参数
当你定义一个函数,你可以为参数列表中后边的每一个参数指定默认值。当调用函数时,如果实际参数的值留空,则使用这个默认值。
这是通过在函数定义中使用赋值运算符来为参数赋值的。调用函数时,如果未传递参数的值,则会使用默认值,如果指定了值,则会忽略默认值,使用传递的值。
注:某一个参数有默认值,那么在这之后的参数都要有默认值。
//返回值类型 函数名 (参数 = 默认值)
int func(int a,int b = 10,int c = 10)
{
return a+b+c;
}
函数占位参数
//返回值类型 函数名 (数据类型)
void func(int a,int){}
函数重载
函数名可以相同,提高复用性,函数的返回值不可以作为函数重载的条件。
函数重载条件
- 同一个作用域下;
- 函数名称相同;
- 函数参数类型不同,或者个数不同,或者顺序不同。
函数的分文件编写
创建后缀名为.h的头文件
#include <iostream>
using namespace std;
void swap(int a, int b);
创建后缀名为.cpp的源文件
#include "Swap.h"
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
cout << "a=" << a << endl;
cout << "b=" << b << endl;
}
在头文件中写函数的声明,在源文件中写函数的定义。
#include "Swap.h"
swap(10,25);
Lambda
[capture](parameters)->return-type{body}
[](int x, int y){ return x < y ; }
[](int x, int y) -> int { int z = x + y; return z + x; }
//没有返回值
[capture](parameters){body}
C++变量传递有传值和传引用的区别。
可以通过前面的[]来指定:
- []:沒有定义任何变量。使用未定义变量会引发错误;
- [x, &y]:x以传值方式传入(默认),y以引用方式传入;
- [&]: 任何被使用到的外部变量都隐式地以引用方式加以引用;
- [&]:任何被使用到的外部变量都隐式地以引用方式加以引用;
- [=]:任何被使用到的外部变量都隐式地以传值方式加以引用;
- [&, x]:x显式地以传值方式加以引用。其余变量以引用方式加以引用;
- [=, &z]:显式地以引用方式加以引用。其余变量以传值方式加以引用。
常函数
成员函数后加const后我们称这个函数为常函数,常函数内不可以修改成员属性,成员属性声明时加关键字mutable后,在常函数中依然可以修改。文章来源:https://www.toymoban.com/news/detail-801711.html
void showPerson() const{
//不可以修改
m_Age = 100;
//可以修改
mutable int m_B;
}
常对象
声明对象前加const称该对象为常对象,常对象只能调用常函数。文章来源地址https://www.toymoban.com/news/detail-801711.html
const Person p ;
到了这里,关于【嵌入式——C++】 数组与函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!