Cprogramming 简明教程
C - Properties of Array
数组是 C 中一个非常重要的数据结构。在 C 程序中使用数组可以更轻松地处理大量数据。由于它们的许多属性,数组比单一变量有许多优点。数组的大部分重要属性都是其组成的结果——数组是相同 data type 值的集合,位于连续的内存块中。
数组属性可能会在不同的编程语言中发生变化。在 C 编程语言中,以下是数组的主要属性:
-
相同数据类型的集合
-
Contiguous Memory Allocation
-
Fixed Size
-
Length Depends on Type
-
Indexing
-
Pointer Relationship
-
Lower and Upper Bounds
-
Multi-dimensional Array
-
复杂数据结构的实现
让我们详细讨论每个属性。
Collection of Same Data Type
array 的所有元素必须具有相同的数据类型。这确保了对数据的始终如一地访问和操作。
如果将数组声明如下 −
int arr[] = {50, 67.55, "hello", 21};
编译器会发出警告 −
initialization of 'int' from 'char *' makes integer from pointer without a cast
[-Wint-conversion]|
Fixed Size
数组的大小在声明时确定,并且在程序执行期间不能更改。这意味着你需要事先知道所需的元素最大数量。在 C 中,数组不能使用变量来定义大小。
#define SIZE = 10
int arr[SIZE];
const SIZE = 10;
int arr[SIZE];
int SIZE = 10;
int arr[SIZE];
float num[10.5] = {50, 55, 67, 73, 45, 21, 39, 70, 49, 51};
Length Depends on Type
由于数组可以存储所有相同类型的元素,因此它占据的总内存取决于数据类型。
Example
#include<stdio.h>
int main() {
int num[10] = {50, 55, 67, 73, 45, 21, 39, 70, 49, 51};
int size = sizeof(num) / sizeof(int);
printf("element at lower bound num[0]: %d \n", num[0]);
printf("at upper bound: %d byte \n", num[size-1]);
printf("length of int array: %ld \n", sizeof(num));
double nm[10] = {50, 55, 67, 73, 45, 21, 39, 70, 49, 51};
size = sizeof(nm) / sizeof(double);
printf("element at lower bound nm[0]: %f \n", nm[0]);
printf("element at upper bound: %f \n", nm[size-1]);
printf("byte length of double array: %ld \n", sizeof(nm));
return 0;
}
element at lower bound num[0]: 50
at upper bound: 51 byte
length of int array: 40
element at lower bound nm[0]: 50.000000
element at upper bound: 51.000000
byte length of double array: 80
Indexing
数组中的每个元素都有一个从 0 开始的唯一索引。你可以使用方括号中的索引访问各个元素。通常,数组使用跨越其长度的 for loop 遍历,并将循环变量用作索引。
Pointer Relationship
数组的名称等同于其第一个元素的常量 pointer 。这让你可以在某些上下文中互换使用数组名和指针。
Lower and Upper Bounds
数组中的每个元素都由从 0 开始的索引标识。数组的下限是其第一个元素的索引,始终为 0。数组中最后一个元素的大小 -1 为其索引。
Example
#include <stdio.h>
int main() {
int num[10] = {50, 55, 67, 73, 45, 21, 39, 70, 49, 51};
int size = sizeof(num) / sizeof(int);
printf("element at lower bound num[0]: %d at upper bound: %d Size of array: %d",
num[0], num[size-1], size);
return 0;
}
element at lower bound num[0]: 50 at upper bound: 51 Size of array: 10
Multi-dimensional Array
数组用方括号中的一个大小值声明,称为一维数组。在一维数组中,每个元素都由其索引或下标标识。在 C 中,你可以使用更多索引来模拟二维、三维或 multidimensional array 。