欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

数组的定义,初始化,赋值,传参、返回值、求容量等的总结

程序员文章站 2022-06-24 12:54:35
一)数组概述 数组是用于储存多个相同类型数据的集合。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。 在C语言中, 数组属 ......

一)数组概述

  数组是用于储存多个相同类型数据的集合。组成数组的各个变量称为数组的分量,也称为数组的元素,有时也称为下标变量。用于区分数组的各个元素的数字编号称为下标。数组中的元素存储在一个连续性的内存块中,并通过索引来访问(这一点也和结构和类中的字段不同,它们通过名称来访问)。

  在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、、结构数组等各种类别。按数组内存的分配方式不同,可分为静态数组和动态数组。按描述维度的不同,可分为一维数组、二维数组、三维数组等。

  以下是经过相关测试实例:

 1 template<class T>
 2 vector<T> transmit_array_to_vec(const T data[], const int arraySize)
 3 {
 4     vector<T> tmp;
 5 
 6     for (int i = 0; i < arraySize; ++i) tmp.push_back(data[i]);
 7 
 8     return tmp;
 9 }
10 
11 template<class T>
12 void transmit_vec_to_array(const vector<T>& vec, T data[])
13 {
14     size_t len = sizeof(data);//4
15 
16     for (size_t i = 0; i < vec.size(); ++i) data[i] = vec[i];
17 }
18 
19 template<class T>
20 T* transmit_vec_to_array(const vector<T>& vec)
21 {
22     T* data = new T[vec.size()];
23 
24     for (size_t i = 0; i < vec.size(); ++i) data[i] = vec[i];
25 
26     return data;
27 }
28 
29 void test_about_array()
30 {
31     {
32         vector<int> vec = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
33         int* data = new int[10];
34         transmit_vec_to_array(vec, data);
35         size_t len = sizeof(data) / sizeof(int);//1
36         for (int i = 0; i < 10; ++i) printf("%d \n", data[i]);
37         delete[]data;
38     }
39     {
40         vector<int> vec = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
41         int data[10];
42         transmit_vec_to_array(vec, data);
43         size_t len = sizeof(data) / sizeof(int);//10
44     }
45     {
46         vector<int> vec = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
47         int* data = transmit_vec_to_array(vec);
48         size_t len = sizeof(data) / sizeof(int);//1
49         for (int i = 0; i < 10; ++i) cout << data[i] << endl;
50         delete[]data;
51     }
52     {
53         vector<int> vec;
54         int data[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
55         int len = sizeof(data) / sizeof(int);//10
56         vec = transmit_array_to_vec(data, len);
57     }
58 }
59 
60 int main()
61 {
62     test_about_array();//有关数组的传参、返回值、赋值、求容量的测试
63 
64     return 0;
65 }

二)数组的定义和初始化

 

三)数组的传参

 

四)返回值是数组

  

五)数组的长度计算