C++数组

简介: C++数组

一些具有相同数据类型或相同属性(类)的数据的集合,用数据名标识,用下标或序号区分各个数据。数组中的数据称为元素。


一维数组


定义一维数组的形式:     数据类型 数据名[常量表达式]

初始化的形式:    数据类型 数组名[常量表达式] = {初值表};

为数组的某一个元素赋值:    数组名[下标] =值(下标从0开始)

数组的引用:    数组名[下标]


初始化数组时,可以只给部分数组元素赋值

对全部元素数组赋值时,可以不指定数组长度,编译系统会根据初值个数确定数组的长度。

static型数组元素不赋初值,系统会自动默认为0。


int arr1[4] = {1,2,3,4};
int arr2[4] = { 1,2 };
int arr[4] = {0];//所有元素为0
static int arr3[3];
int arr4[4];
cout << "arr1:"<<arr1[0] << arr1[1] << arr1[2] << arr1[3] << endl;
cout << "arr2:" << arr2[0] << arr2[1] << arr2[2] << arr2[3] << endl;
cout << "arr3:" << arr3[0] << arr3[1] << arr3[2] << arr3[3] << endl;
cout << "arr4:" << arr4[0] << arr4[1] << arr4[2] << arr4[3] << endl;


25ea3e39b87eacf2a25d2fb5dda6c038_e6efccb892044dd4ae284d47fd399ae3.png


二维数组


定义一维数组的形式:        数据类型 数据名[常量表达式1][常量表达式2]

初始化的形式:        数据类型 数组名[常量表达式1] [常量表达式2]= {初值表};

为数组的某一个元素赋值:        数组名[行下标][列下标] =值(下标从0开始)

数组的引用:        数组名[行下标][列下标]


将所有数据写在一个花括号内,自动按照数组元素个数在内存中排列的顺序赋值

可对部分元素赋值,其余元素的值自动取0.

定义初始化数组时,可以省略第一维的长度,第二维不能省,系统会自动确认行数


int arr1[2][3];
int arr[2][3] = {0];//所有元素为0
int arr2[2][3] = { {1,2,3},{4,5,6} };
int arr3[2][3] = { 1,2,3 ,4,5,6 };
int arr4[2][3] = { {1},{4,6} };
int arr5[][3] = { 1,2,3 ,4,5,6 };

241898b30d185300efa1a7b0ce660493_watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNjcwMTU3,size_16,color_FFFFFF,t_70.png


字符数组


char类型的数组,在字符数组中最后一位为’\0’)时,可以看成时字符串。在C++中定义了string类,在Visual C++中定义了Cstring类。

字符串中每一个字符占用一个字节,再加上最后一个空字符。如:


//字符串长度为8个字节,最后一位是'\0'。
char array[10] = "yuanrui";//yuanrui\0\0\0
//也可以不用定义字符串长度,如:
char arr[] = "yuanrui";//yuanrui\0


指向数组的指针


指针的概念会在后面详细讲解。


double *p;
double arr[10];
p = arr;//p = &arr[0];
*(p+3);//arr[3]


数组与new(动态创建数组)


一维数组:


int* arr1 = new int[2];//delete []arr1;
int* arr2 = new int[3]{ 1,2 };//delete []arr2


二维数组:


int m=2, n=3;
int** arr3 = new int*[2];//delete []arr3
for (int i = 0; i < 10; ++i)
{ 
  arr3[i] = new int[3]; // delete []arr3[i]
}
int* arr4 = new int[m*n];//数据按行存储 delete []arr3

获取数组的大小


  • 动态创建(new)的基本数据类型数组无法取得数组大小
int a[3];
//第一种方法
cout<<sizeof(a)/sizeof(a[0])<<endl;
//第二种方法
cout << end(a) - begin(a) << endl;
//二维数组
int arr[5][3];
int lines = sizeof(arr) / sizeof(arr[0][0]);
int row = sizeof(arr) / sizeof(arr[0]);//行
int col = lines / row;//列
cout << row << "::"<<col << endl;
cout << end(arr) - begin(arr) << endl;//5行

相关文章
|
6天前
|
存储 算法 编译器
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
【C++ 字符数组的模板特化】面向字符串的C++模板特化:理解与实践
55 1
|
6天前
|
存储 缓存 安全
C++数组全解析:从基础知识到高级应用,领略数组的魅力与技巧
C++数组全解析:从基础知识到高级应用,领略数组的魅力与技巧
55 1
|
6天前
|
存储 算法 搜索推荐
在C++编程语言中数组的作用类型
在C++编程语言中数组的作用类型
17 0
在C++编程语言中数组的作用类型
|
6天前
|
C++
.C++中结构体数组docx
.C++中结构体数组docx
15 0
|
1天前
|
存储 C++
C++程序数组与指针:深入理解与实践
C++程序数组与指针:深入理解与实践
9 1
|
1天前
|
存储 算法 C++
C++程序一维数组:深入理解与实践
C++程序一维数组:深入理解与实践
10 1
|
1天前
|
存储 C++
C++程序中的对象数组
C++程序中的对象数组
7 0
|
1天前
|
存储 C++ 索引
C++程序字符数组:深入理解与实践
C++程序字符数组:深入理解与实践
10 2
|
6天前
|
存储 C++
【C++模板】模板实现通用的数组
【C++模板】模板实现通用的数组
|
6天前
|
存储 人工智能 C++
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
【重学C++】【指针】详解让人迷茫的指针数组和数组指针
34 1