C--一维数组

简介: C--一维数组

一维数组的使用

一维数组的定义方式如下:

类型说明符 数组名 [常量表达式]

int a[5];
  1. 上述定义了一个整型数组,数组名为a。
  2. 数组a中有5个元素,每个元素都是int型变量。
  3. 5个元素在内存中的地址是连续分配的。
  4. 数组中的元素数据类型都相同,所占字节都相同,且在内存中的地址是连续分配的。
  5. 区分元素:通过给每个元素编进行号来区分不同的元素。元素编号下标是从0开始的。例如上述定义的数组a,有5个元素,即a[0],a[1],a[2],a[3],a[4]。a[0],a[1],a[2],a[3],a[4]分别也是这5个元素的变量名。
  1. “[]”中必须是常量或者常量表达式,不能是变量。通常情况下,C语言不允许对数组的长度进行动态定义,数组的大小不依赖于程序运行中过程中变量的值。

一维数组的初始化

数组元素初始化的一般形式如下:

类型说明符 数组名[常量或常量表达式]={初值表列};

例如:

float a[4]={2,3,5,6};

上述定义数组时给所有元素赋初值,这叫 “完全初始化”。

只有定义数组时可以整体赋值,其他情况下不可以整体赋值!

且从左往右依次给每个元素赋值,即a[0]=2,a[1]=3,a[2]=5,a[3]=6。

int b[4]={1,2};

整型数组b有四个元素,但花括号内只有两个初值,即“不完全初始化”。这时a[0]=1,a[1]=2,对于a[3],a[4]并没有初始化,默认为0。

int c[6];

上述只是定义了整型数组c,并没有初始化。若在下面编程中没有对任何元素进行初始化,那么这时每个元素c[0],c[1],c[2],c[3],c[4],c[5]就是0了,而是随机数。(如果不初始化,也不能写成“int c[6]={}”)

int d[3]={0};

上述表示给数组清零,即此时数组中每个元素都是0。

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

如果定义数组时就给所有的元素赋初值,那么也可以不用写元素的个数。系统会自动分配空间。

等价于:

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

一维数组简单程序

一维数组每个元素的输出

#include <stdio.h>
int main (void)
{
  int a[5]={6,7,2,3,1};
  int i;
  for (i=0;i<=4;i++)
  {
    printf("%d\n",a[i]);
  }
  return 0;
}

输出结果

6
7
2
3
1

用scanf函数手动从键盘对每个元素初始化。

一维数组的使用

C语言规定,只能逐个引用数组元素,而不能引用整个数组。

注意:定义数组时“[]”内的常量或者常量表达式表示的是数组的个数。而引用数组时“[]”内的常量或者常量表达式表达的是数组元素的编号。

只有在定义的时候a[常量]表示的是数组,除此之外,程序中任何地方看到的a[常量]都是数组中的一个元素。

int a[4]={1,2,3,4};  //定义数组并完成初始化
t=a[3];    //将“a[3]即4的值赋值给t”

一个错误的程序

int a[4]={9,6,3,7};
a[4]={4,5,7,8};

如果想要给数组重新赋值,只能依次对每个元素完成赋值。

int  a[4]={9,6,3,7};
a[0]=4;
a[1]=5;
a[2]=7;
a[3]=8;

获取数组的长度

获取数组的长度,使用关键字sizeof。

用sizeof可以获得数据类型或者变量所占的字节数。

#include <stdio.h>
int main (void)
{
  int i=3;
  int a[5]={1,2,4,5,6};
  printf("%d\n",sizeof (i));
  printf("%d\n",sizeof (a[2]));
  printf("%d\n",sizeof (a));
  return 0;
}
4
4
20

将数组a赋值给数组b

错误的程序:

int a=[1,2,3,4,5];
int b=[5];
b=a;

a和b是数组名,也表示a和b的第一个元素的起始地址。故a和b是常量,常量之间是不能相互赋值的。

应当将a的每一个元素一次赋值给b。

#include <stdio.h>
int main (void)
{
  int a[5]={1,2,3,4,5};
  int b[5];
  int i;
  for (i=0;i<=4;i++)
  {
    b[i]=a[i];
    printf("%d\n",b[i]);
  }
  return 0;
}
1
2
3
4
5

输入n个整数,输出其中最小的数,并指出它是第几个数。

/*输入n个整数,输出其中的最小值,并指出它是第几个数*/
#include <stdio.h>
int main (void)
{
  int n,i,min,a[100],index;   //index存储最小数的下标  a[100]存储输入的数
  printf("Please input n :\n");
  scanf("%d",&n);
  printf("Please input %d integer numbers:\n",n);
  for (i=1;i<=n;i++)
  {
    scanf("%d",&a[i-1]);
  }
  min=a[0];
  for (i=1;i<n;i++)
  {
    if (a[i]<min)
      min=a[i];
  }
  for (i=0;i<n;i++)
  {
    if (a[i]==min)
      index=i+1;
  }
  printf("最小值为%d,它是第%d个数\n",min,index);
  return 0;
}


相关文章
|
6月前
|
存储 算法 搜索推荐
15一维数组
15一维数组
60 0
【一维数组和二维数组】
【一维数组和二维数组】
55 0
|
6月前
|
存储 编译器 C语言
认识一维数组和使用
**数组概念与特性:**数组是一组相同类型元素的集合,包含至少一个元素。数组可分为一维和多维(如二维数组)。在创建时需指定大小和元素类型,如`int arr[5]`表示一个包含5个整数的数组。数组元素通过下标访问,下标从0开始。数组在内存中连续存放,可以通过`sizeof`计算数组占用的字节数以间接获取元素个数。
52 1
|
6月前
|
存储 C语言
二维数组的使用
这篇内容介绍了二维数组的概念,它是将一维数组作为元素构成的数组,也称为多维数组。文章详细讲解了如何创建二维数组,包括指定行数和列数,并展示了不同类型的初始化方式:不完全初始化(剩余元素设为0)和完全初始化。此外,还提到了按照行初始化的语法。内容中强调了C语言中二维数组的行和列都从0开始计数,并通过示例解释了如何访问和输出数组元素。最后,讨论了二维数组在内存中的存储方式,它是一维数组数组,元素在内存中是连续存放的。
50 0
|
6月前
|
存储 算法 搜索推荐
16二维数组
16二维数组
45 0
|
6月前
|
算法 C++
C++012-C++一维数组
C++012-C++一维数组
C++012-C++一维数组
|
6月前
|
C语言
二维数组的知识
二维数组的知识
|
11月前
|
存储 C语言
一维数组剖析
一维数组剖析
47 0
|
存储 C语言
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数2
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数2
|
C语言
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数4
【C语言】 数组:-- 一维数组 -- 二维数组 -- 数组越界 -- 数组作为函数的参数4