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]);
  }
}