C++一维数组教程

1. 什么是一维数组?

一维数组是一种数据结构,它可以存储一组相同类型的数据。你可以把它想象成一排连续的小盒子,每个盒子都可以存放一个数据,而且这些数据的类型都一样。例如,如果你想存储一组整数,就可以使用一维整数数组。

2. 定义一维数组

  • 基本语法
    • 定义一维数组的基本语法是:数据类型 数组名[数组大小];
    • 例如,定义一个能存储5个整数的数组:int numbers[5];
    • 这里int是数组中元素的数据类型(表示整数),numbers是数组名,5是数组的大小,也就是这个数组可以存放5个整数。

3. 数组的初始化

  • 默认初始化
    • 当你定义一个数组时,如果没有对它进行初始化,对于基本数据类型(如intdouble等),数组元素会被默认初始化。对于数值类型,通常会被初始化为0。例如,上面定义的numbers数组,它的5个元素一开始都被初始化为0。
  • 初始化列表初始化
    • 你也可以在定义数组的时候就给它赋初始值,使用花括号{}包含初始值列表。例如:int scores[3] = {85, 90, 92};
    • 这样就定义了一个名为scores的数组,它有3个元素,并且分别初始化为85、90和92。
    • 如果你提供的初始值个数少于数组大小,剩下的元素会被默认初始化为0。例如:int anotherArray[4] = {1, 2};,这个数组的前两个元素是1和2,后两个元素是0。
    • 如果你不指定数组大小,编译器会根据初始化列表中的元素个数来确定数组大小。例如:int array[] = {3, 4, 5};,这里编译器会自动确定array数组的大小为3。

4. 访问数组元素

  • 使用下标访问
    • 可以通过下标来访问数组中的元素,下标是从0开始计数的。例如,对于scores数组,scores[0]表示第一个元素(值为85),scores[1]表示第二个元素(值为90),scores[2]表示第三个元素(值为92)。
    • 例如,你可以这样输出数组中的元素:
    for (int i = 0; i < 3; ++i) {
       std::cout << scores[i] << " ";
    }
    
    • 这段代码会输出数组scores中的所有元素,每个元素之间用空格隔开。

5. 数组作为函数参数

  • 传递数组给函数
    • 当把数组作为参数传递给函数时,实际上传递的是数组的首地址(也就是第一个元素的地址)。在函数中,对数组元素的修改会影响到原始数组。
    • 例如,定义一个函数来计算数组元素的总和:
    int sumArray(int arr[], int size) {
       int sum = 0;
       for (int i = 0; i < size; ++i) {
          sum += arr[i];
       }
       return sum;
    }
    
    • 这里int arr[]表示函数接受一个整数数组作为参数,int size是数组的大小(因为只传递数组首地址是不知道数组大小的,所以需要额外传递数组大小参数)。
  • 调用函数示例
    • 假设你有一个数组myArray,可以这样调用sumArray函数:
    int myArray[] = {1, 2, 3, 4, 5};
    int arraySize = sizeof(myArray) / sizeof(myArray[0]);
    int total = sumArray(myArray, arraySize);
    std::cout << "数组元素总和为: " << total << std::endl;
    
    • 首先计算myArray的大小(元素个数),然后调用sumArray函数计算总和,并输出结果。

6. 动态分配数组

  • 使用new操作符
    • 在某些情况下,你可能不知道数组的大小,直到程序运行时才确定。这时可以使用new操作符来动态分配数组。例如:
    int size;
    std::cout << "请输入数组大小: ";
    std::cin >> size;
    int* dynamicArray = new int[size];
    
    • 这里首先从用户那里获取数组大小,然后使用new操作符分配一个大小为size的整数数组,返回的是数组首元素的地址,所以需要用一个指针(int*)来接收。
  • 释放动态分配的数组
    • 当你使用完动态分配的数组后,一定要使用delete[]操作符来释放内存,避免内存泄漏。例如:
    delete[] dynamicArray;
    
    • 这会释放之前用new分配的数组所占用的内存空间。

0 条评论

目前还没有评论...