重温C语言 | 一维数组

数组的概念

数组:由一系列具有相同数据类型组成的集合
  1)数据多(数据个数>=2)
  2)数据意义一样,----->数据的类型一致
  3)数据彼此独立,互不影响
  元素:数组中的数据,用下标表示元素
 下标:数据在数组中的排列顺序,从0开始排序

一维数组的定义 初始化

数组的定义

数组的定义格式
数据类型 数组名[长度];

 说明:数据由数组元素的数据类型决定
 数组名符标识符的命名------凡是由程序员自己命名的都是要符合标志符命名规则
 数组名代表数组首元素的地址---->常量地址 长度:表示的是数组元素的个数,长度必须为整型常量表达式

 int a[5]; //表示定义了一存储5个整型数据的数组
 int a[‘A’]; //
 int a[‘\n’+1]; //
 int a[10+1];

错误的初始化
 int n = 5;
 int a[n]; //不符合语法规则,n为整型变量

 int a[1.5+3.5]; //长度为实型数据,不符合语法规则
 int a[]; //如果只定义,没写数据长度。不符合语法规则
 int a[] = {0}; //表示初始化一个空间

数组的初始化,数组在定义的时候并赋值

int a[5] = {1,2,3,4,5}; int b[5] = a[5]//错误

  1. 数组在初始化的时候,采用大括号的形式进行赋值,并且只有在初始化的时候才能采用大括号的形式对其进行整体赋值。
  2. 如果数组只定义,不赋值,则数组元素的值为随机值
  3. 数组的初始化形式分为两种,一种为完全初始化,数组中所有的元素都有值,
    另外一种初始化方式是数组进行部分初始化,系统默认从第一个元素开始赋值,未被初始化的元素赋值为0
    int a[5] = {1,2,3};
  4. 数组与数组之间不能进行整体赋值,要通过数组元素与元素之间进行赋值
  5. 如果对数组进行初始化,数组的长度省略,则系统按照数组中初始化的元素的数据进行分配
    int a[]= {1,2,3}
一维数组的赋值 与引用
  1. 数组元素的引用
    数组引用元素的方式:数组名[下标] ------->元素
    下标从0开始,下标一定小于数组的长度
    数组名[下标]----->如果出现在定义语句的时候表示定义数组,其他情况下均表示数组的元素

  2. 数组元素的赋值
    采用数组名[下标] 对其数组中的元素进行逐一赋值

int main()
{

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

  printf("%d\n",a[0]); //3
  printf("%d\n",a[1]); //6
  printf("%d\n",a[2]); //随机值
  printf("%d\n",a[3]); //随机值
  printf("%d\n",a[4]); //9
  printf("---------------------------\n");

  int i;

  for(i = 0; i < 5; i++)
  printf("%d ",b[i]);  //依次打印数组中每一个元素的值


}

输出结果

[csy@local cpp]$ ./init1 
3
6
134513920
134513472
9
---------------------------
1 2 3 4 5 [csy@local cpp]$ vim array_init1.c 

如何采用循环的方式给数组中的元素依次赋值:
1)第一种形式:通过 数组名[下标] ,利用循环的方式进行赋值----->终端输入

#include <stdio.h>
int main()
{

        int b[10];  //有10个整型元素的数组
        int i;

        for(i = 0; i < 10; i++)
        {
                scanf("%d",&b[i]);  //终端依次输入元素的值
        }

        printf("---------------------------------\n");

        for(i = 0; i < 10; i++)
        {
                printf("%d ",b[i]);//依次打印数组中每个元素的值
        }
        printf("\n");
}

运行结果:

[csy@local cpp]$ vim array_init2.c
[csy@local cpp]$ gcc array_init2.c -o init2
[csy@local cpp]$ ./init2 
1
2
3
4
5

6
4
7
8
9
---------------------------------
1 2 3 4 5 6 4 7 8 9 

第二种形式,通过 数组名+偏移量 进行对数组元素进行依次赋值或者打印
数组名表示数组首元素的地址
数组名+i ------>表示下标为i的元素的地址
int a[5]; //在定义一个数组的时候,系统分配空间时候,是一块连续的内存空间
a == &a[0]    a == a[0]
a+1 == &a[1]  
(a+1) == a[1]
a+i == &a[i]  *(a+i) == a[i]

#include <stdio.h>

int main()
{

	char a[5] = {3,5,67,9,10};  //完全初始化
    printf("%d\n",*a);
    printf("%d\n",a[0]);

    printf("%d\n",*(a+1));

	printf("%#p\n",a);
    printf("%#p\n",a+1);
    printf("%#p\n",&a[1]);

}

输出结果

[csy@local cpp]$ ./init3
3
3
5
0xbfd9497b
0xbfd9497c
0xbfd9497c
一维数组的大小

一维数组的大小 = 数组的长度(元素的个数)*元素所占空间的大小

元素个数的计算= sizeof(数组名)/sizeof(元素)

举个栗子:

#include <stdio.h>
int main()
{
        int a[] = {10,23,4,5,6,7,9,0,4,2,5,6};
        int n;
        n = sizeof(a)/sizeof(a[0]);
        printf("数组的大小:%d\r\n",sizeof(a));
        printf(" 数组元素个数% d\r\n",n);
}

输出结果:

[csy@local cpp]$ vim arrar_size.c
[csy@local cpp]$ gcc arrar_size.c -o size
[csy@local cpp]$ ./size 
数组的大小:48
 数组元素个数 12
[csy@local cpp]$ vim arrar_size.c
发布了65 篇原创文章 · 获赞 36 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_40860986/article/details/95040987
今日推荐