【面向对象编程c++】| 数组与函数

一、数组

数组是固定大小、相同类型元素的顺序集合,用来存储一系列同类型数据,可以看作一组相同类型的变量。

1. 一维数组

语法:

cpp 复制代码
type array[arraySize];

示例:

cpp 复制代码
double balance[5] = {1000.0, 2.0, 3.9};

要点:

  • 如果省略数组大小,数组长度等于初始化列表里元素的个数。
  • 数组下标从 0 开始,通过数组[下标]访问元素。

2. 二维数组(多维数组)

多维数组:有几个方括号[],就是几维数组。 语法:

复制代码
type arrayName[x][y];

行索引、列索引全部从 0 开始。

二维数组初始化

可以按行分组初始化(推荐,可读性好):

cpp 复制代码
int a[3][4] = {
    {0, 1, 2, 3},   /* 初始化索引为 0 的行 */
    {4, 5, 6, 7},   /* 初始化索引为 1 的行 */
    {8, 9, 10, 11}  /* 初始化索引为 2 的行 */
};

嵌套花括号可以省略,会按顺序依次填充元素,效果完全相同:

复制代码
int a[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
访问二维数组元素

通过行下标、列下标访问数组元素:

复制代码
int val = a[2][3];

含义:获取数组第 3 行、第 4 个元素(下标从 0 开始)

3. 字符数组

专门用来存放字符的数组。


二、函数

函数是一组一起执行一个任务的语句。 每个 C++ 程序至少有一个函数:主函数 main();我们可以自定义额外函数。

  • 代码可以拆分到不同函数,拆分原则:一个函数只负责完成一项特定任务。
  • 函数声明:告诉编译器函数名、返回类型、参数信息;函数主体单独定义。
  • 函数定义:写函数的实际执行代码。
  • C++ 标准库内置大量函数:
    • strcat():拼接两个字符串
    • memcpy():内存拷贝

函数别名:方法、子例程、程式、程序

1. 函数定义

通用格式

cpp 复制代码
return_type function_name( parameter list )
{
   body of the function
   return return_type;
}

函数由函数头 + 函数主体组成:

  • 返回类型 :函数返回值的数据类型;无返回值时写 void。
  • 函数名称 :函数名字,函数名 + 参数列表构成函数签名。
  • 参数 :形参,相当于占位符;调用函数时传入的值叫实参。参数列表规定参数类型、顺序、数量;参数可选,函数可以无参数。
  • 函数主体:花括号内,实现功能的代码语句。

2. 函数声明

告诉编译器如何调用该函数,函数实现可以放在后面或者别的文件。 语法:

复制代码
return_type function_name( parameter list );

示例:

复制代码
int max(int num1, int num2);

声明中,参数名可以省略,只保留类型,下面写法合法:

复制代码
int max(int, int);

使用场景:函数定义写在别的.cpp源文件时,必须在调用文件顶部写函数声明。

3. 函数调用 & 值传递

形式参数(形参):定义函数时括号里的变量 实际参数(实参):调用函数时传入的参数,可以是常量、变量、表达式

值传递特点(单向传递)

  1. 调用函数时,实参把值拷贝给形参;不能把形参修改传回实参。
  2. 函数内部修改形参,不会影响外面的实参。

完整示例代码:

cpp 复制代码
#include <iostream>
using namespace std;
// 函数声明
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;
}

输出

复制代码
Max value is : 200

4. 函数默认参数

C++ 中,形参可以设置默认值。 语法:返回值类型 函数名 (参数 = 默认值) {}

cpp 复制代码
int func(int a, int b = 10, int c = 10) {
    return a + b + c;
}

// 规则:
//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值
//2. 如果函数声明写了默认值,函数实现定义时,不能再写默认参数
int func2(int a = 10, int b = 10);
int func2(int a, int b) {
    return a + b;
}

int main() {
    cout << "ret = " << func(20, 20) << endl;
    cout << "ret = " << func(100) << endl;
    system("pause");
    return 0;
}

5. 内联函数

在函数定义最前面加关键字 inline。 作用:减少函数调用开销,节省程序运行时间。

相关推荐
悠仁さん4 小时前
【C++】AVL 树
c++
wuminyu5 小时前
JVM规范学习总结:解释器与JIT编译器如何处理JVM字节码
java·linux·c语言·jvm·c++
txxzjmzlh5 小时前
SpringBoot 配置⽂件
java·spring boot·spring
小徐不徐说5 小时前
序列化与反序列化:把 C++ 对象可靠地保存下来
开发语言·数据库·c++·php
ragnwang5 小时前
Notes: Python pybind11 import C++ module
开发语言·c++·python
Wang's Blog5 小时前
Java 项目实战: 交友项目 - 搜索附近的功能概述和分析
java·开发语言·交友
骑着蜗牛撵大象3276 小时前
大模型 Agent 的沙箱护栏:gVisor 隔离、出口白名单与审计闭环
java·开发语言·jvm·安全·agent沙箱·gvisor·microvm
独泪了无痕6 小时前
Hutool之LocalDateTimeUtil:让时间间隔操作如虎添翼
java
充值内卷7 小时前
我给桌面加了个鱼缸:C++ 写后端,WebView2 里养一座 Three.js 小岛
开发语言·javascript·c++
三无少女指南7 小时前
从这里开始:Java 后端与 AI 工程的三条阅读路线
java·学习路线·ai工程