C语言数组的定义及其使用方法

什么是数组?

在我们学习数组前先让我们介绍一下c语言中数组是什么?数组就是一个个元素按照一定顺序排列的集合。它将数据从最低的内存地址保存到最高的内存地址。

声明一个数组

c语言规定了声明数组的格式:

type Name [ Size ];

type:需要定义的数据类型,可以是int,long long等。

Name:声明数组的名字,可以是jun,bian或其它你想使用的名字。

Size:数组的大小,比如你在[ ]中写了10,那么这个数组就分配了10个内存地址给你使用,也就是说你可以在这个数组中写入10个符合你定义的数据类型的元素。

初始化数组

在声明完数组后我们可以初始化数组,具体方法如下:

一、

int jun[5]={0,1,2,3,4};

这样子我们就将0,1,2,3,4这五个int值依次赋给了数组jun。

需要注意的是我们在初始化数组时不能将超过我们上限的元素赋给数组,也就是说我们规定了数组中只能有5个元素,就不能把第6个元素赋给数组。

二、

int jun[]={0,1,2,3,4};

我们在定义时可以省略数组的大小,这时我们在第一次初始化数组时给出的元素数量就是这个数组的大小。

三、

有时我们迫切的需要将数组中所有的值都初始化成一个数,那么在这里我们介绍一下memset()函数及其用法:

memset()函数可以直接对内存进行读写,是一种较快捷的初始化方式。

memset(*name,int,n);

 

memset()函数会对*name的前n个内存地址进行初始化,初始化的数值是int。

int jun[5]={};
memset(jun,0,5);

在这个示例中我们将jun这个数组中的5个元素都初始化成了0。

访问数组中的值

我们可以通过以下方式来访问数组中的值:

a=jun[0];

在这里我们将jun数组中的第1个元素赋值给了a这个变量。

tip:在数组中第一个元素对应的是数组的第0位,第二个元素才是第1位)

使用指针来访问数组

我们同样可以使用指针来访问数组中的值:

#include"stdc++.h"
int main() {
  int jun[5] = { 0,1,2,3,4 };
  int *bian;
  bian = jun;
  printf("%d", *bian + 0);
  system("pause");
}

调试后它会出现以下结果:

当我们将第一个元素的地址赋给了bian这个指针后,我们可以通过*bian+n这种方法读取数组中我们想要读取的第n个元素,因为数组中所有元素的内存地址都是依次排列的。

*实例

接下来展示的实例会让你对数组的使用方法有个初步的概念:

#include"stdc++.h"
int main() {
  int jun[10];
  int a,b;
  int *bian;
  memset(jun, 0, 10);
  for (a = 0;a < 10;a++) {
    jun[a] = a;
  }
  bian = jun;
  for (b = 0;b < 10;b++) {
    printf("%d",*bian+b );
    printf("\n");
  }
  system("pause");
  return 0;
}

调试后会出现以下结果:

*多维数组

c语言中不仅可以使用一维数组(也就是我们刚才讲的)还可以使用多维数组,接下来我们来讲解一下最常见的多维数组——二维数组。

二维数组的声明方式:

int jun[2][3]={
{0,1,2}
{3,4,5}
}

可以看到与一维数组的声明方式是相似的。

访问二维数组:

a=jun[x][y];

访问二维数组中的元素和访问一维数组中的元素方法差不多。

实例:

这个实例会先定义一个二维数组,然后按列依次赋值,最后依次输出。

#include"stdc++.h"
int main() {
  int jun[5][5];
  int x=0, y=0,z,a=0;
  z = y;
  memset(jun, 0, sizeof(jun));
  
  for (int i = 0;i < 5;i++) {
    jun[x][y] = a;
    for (int i = 0;i < 5;++i) {		
      jun[x][y] = a;
      ++a;
      ++y;
    }
    y = 0;
    ++x;		
  }
  x = 0, y = 0;
  for (int i = 0;i < 5;i++) {
    printf("%d", jun[x][y]);
    printf(" ");
    for (int i = 0;i < 4;++i) {
      ++x;
      printf("%d", jun[x][y]);
      printf(" ");
      
    }
    printf("\n");
    ++y;
    x = 0;
  }
  system("pause");
  return 0;
}

调试后它会出现以下结果:

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

14 − 8 =