📅  最后修改于: 2023-12-03 14:39:37.734000             🧑  作者: Mango
数组是一种存储相同类型数据的容器,是C/C++基础数据类型之一。在程序中,数组能够很好地组织和存储相同类型的数据,方便数据的操作和处理。
定义数组需要指定数组的类型、名称和长度。
C语言:
int a[5]; // 定义长度为 5 的整型数组 a
C++语言:
int a[5]; // 定义长度为 5 的整型数组 a
在定义数组时,可以同时初始化数组:
C语言:
int a[5] = {1, 2, 3, 4, 5}; // 定义长度为 5 的整型数组 a,并初始化为 {1, 2, 3, 4, 5}
C++语言:
int a[5] = {1, 2, 3, 4, 5}; // 定义长度为 5 的整型数组 a,并初始化为 {1, 2, 3, 4, 5}
若只给部分元素赋值,则其余元素将被初始化为0:
C语言:
int a[5] = {1, 2, 3}; // 定义长度为 5 的整型数组 a,并初始化为 {1, 2, 3, 0, 0}
C++语言:
int a[5] = {1, 2, 3}; // 定义长度为 5 的整型数组 a,并初始化为 {1, 2, 3, 0, 0}
数组中的元素可以通过下标访问,数组下标从0开始。
C语言:
int a[5] = {1, 2, 3, 4, 5};
printf("%d\n", a[2]); // 访问数组a的第3个元素,输出3
C++语言:
int a[5] = {1, 2, 3, 4, 5};
cout << a[2] << endl; // 访问数组a的第3个元素,输出3
可以使用循环访问数组中的所有元素。
C语言:
int a[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
C++语言:
int a[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
cout << a[i] << " ";
}
定义指向数组的指针需要指定指针类型和指针名称,指针内容为数组首元素的地址。
C语言:
int a[5] = {1, 2, 3, 4, 5};
int *p = a; // 定义整型指针 p 指向整型数组 a 的首元素
C++语言:
int a[5] = {1, 2, 3, 4, 5};
int *p = a; // 定义整型指针 p 指向整型数组 a 的首元素
使用指针访问数组元素,可以通过指针加减来实现。
C语言:
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
printf("%d\n", *(p+2)); // 输出数组 a 的第3个元素,即 3
C++语言:
int a[5] = {1, 2, 3, 4, 5};
int *p = a;
cout << *(p+2) << endl; // 输出数组 a 的第3个元素,即 3
二维数组是由多个一维数组组成的数组,可以理解为表格的形式。定义二维数组需要指定数组类型、名称和行列数。
C语言:
int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义一个2行3列的二维整型数组,并初始化
C++语言:
int a[2][3] = {{1, 2, 3}, {4, 5, 6}}; // 定义一个2行3列的二维整型数组,并初始化
使用循环访问二维数组中的元素。
C语言:
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", a[i][j]);
}
}
C++语言:
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 3; j++) {
cout << a[i][j] << " ";
}
}
数组可以作为函数参数传递。
C语言:
void printArray(int a[], int n) { // 定义函数,接收一个整型数组和数组长度作为参数
for (int i = 0; i < n; i++) {
printf("%d ", a[i]);
}
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
printArray(a, 5); // 调用函数
return 0;
}
C++语言:
void printArray(int a[], int n) { // 定义函数,接收一个整型数组和数组长度作为参数
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
printArray(a, 5); // 调用函数
return 0;
}
空指针是指未指向任何内存地址的指针。在定义指针时,可以使用NULL来初始化空指针。
C语言:
int *p = NULL; // 定义空指针 p
C++语言:
int *p = nullptr; // 定义空指针 p,在C++11之前可以使用NULL来代替nullptr
野指针是指指向未知或未分配内存地址的指针。使用野指针访问内存会导致程序崩溃或不可预知的结果,应该避免使用野指针。
由于数组在定义时需要指定数组长度,所以数组的大小固定不变,无法动态改变。程序可以通过sizeof运算符来获取数组的大小。
C语言:
int a[5] = {1, 2, 3, 4, 5};
printf("%d\n", sizeof(a)); // 输出数组 a 的大小
C++语言:
int a[5] = {1, 2, 3, 4, 5};
cout << sizeof(a) << endl; // 输出数组 a 的大小
数组是一种基础数据类型,可以存储相同类型的数据。定义数组需要指定数组类型、名称和长度。数组下标从0开始,通过下标可以访问数组中的元素。指向数组的指针是指针类型,指向数组首元素的地址。二维数组是由多个一维数组组成的数组。数组可以作为函数参数传递。空指针未指向任何内存地址,野指针指向未知或未分配内存地址。数组的大小固定不变,可以通过sizeof运算符获取数组的大小。