C中的数组
时间:2020-02-23 14:31:51 来源:igfitidea点击:
为什么我们需要数组?
考虑存储10个整数的问题。
存储这些整数的简单方法是创建10个不同的整数变量,并在每个变量中存储1个整数。
这将是一个可行的解决方案,但是操作这些变量本身将是一项任务,我们将必须始终跟踪它们的名称。
因此,对于程序员而言,不是有效的解决方案。
因此,我们介绍了数组的概念。
数组是一种数据结构,用于存储相同类型的变量的固定集合。
它们始终以连续的数据块形式出现在内存中。
基本上,您可以创建一个在索引上具有不同变量的变量。
索引告诉存储变量的存储位置。
如何在C中声明一个数组?
数组声明的一般结构为:
dataType arrayName[arraySize];
注意:数组大小必须是整数。
声明数组时,取决于使用的编译器,数组的初始值也可以为0或者垃圾值。
因此,通常最好的做法是使用一些值初始化数组。
例子:
int arr[10] = {0}; //Simple Declaration with all elements 0 double price[5]; //Any data type allowed, including structs long int phoneNumber[] = {100, 101, 102}; //Implicit size declaration
如何访问数组元素?
有两种方法可以访问C语言中的数组中的元素。
使用方括号。
使用指针。
注意:在某些语言中,索引是基于0的(C/C ++/Python/Java),而在其他语言中,索引是基于1的(MATLAB/Octave)。
在基于0的语言中,第一个元素出现在第0个索引处,在基于1的语言中,第一个元素出现在第一个索引处。
1.使用方括号访问数组元素
arr[5];
其中我们写出变量的名称,后跟包含索引的方括号。
2.使用指针访问数组元素
*(arr + 5);
数组作为连续的数据块存在于内存中,因此可以使用指针直接访问元素的内存。
最初,变量本身指向数组的第一个元素,因此,如果我们编写* arr,我们可以获取第一个元素的值。
如果我们需要第ith个元素,则可以通过将" i"存储块从存在该变量的位置向前移到内存中来获取值。
注意:在编译时,array [idx]被转换为*(array + x)以便执行。
这提出了一个有趣的想法。
我们知道加法是可交换的,因此这意味着idx [arr]也应该是一种有效的写入方式,实际上,这是事实。
编写idx [arr]将提供与arr [idx]相同的输出。
C中的数组示例
#include<stdio.h> #define N 5 int main(){ /* Note: Here we can use arr[i] and *(arr + i) both according to our need and preference. */ int arr[N]; //Simple definition of array int i; for(i = 0; i < N; i++){ printf("Enter element %d : ", i); //Read elements at the memory from user scanf("%d", &arr[i]); } for(i = 0; i < N; i++){ printf("Element at position %d is : %d\n", i, arr[i]); } }