数组初阶段

一批具有同名的同属性的数据可组成一个数组;可知数组的特点为:
(1)数组是一组有序数据的集合;
(2)可用数组名与下标唯一确定数组中的元素;
(3)数组中的元素属于同一个数据类型;

一.定义和引用一维数组;

定义一维数组的一般形式:
类型符 数组名 【常量表达式】
注:

(1)在定义数组时,需要指定数组元素的个数,即数组长度;
(2)常量表达式可以包括常量和符号常量,如:int a[3+5] ;但不可使用变量;
(3)若在被调用的函数中(不含主函数)定义数组,其长度可以是变量或非常量表达式;

引用一维数组的表示形式:

数组名【下标】

注:

(1)下标可以是整形变量或整形表达式;
(2)数组元素的下标从0开始;

一维数组的初始化

(1)在定义数组时对全部数组元素赋初值;
int arr[10]={1,2,3,4,5,6}; 数据间用逗号隔开;
(2)可以给一部分元素赋值;
(3)在对全部数组元素赋值时,由于数组元素个数已经确定,可以不指定数组长度;
int arr[]={1,2,3,4};

重点:

不可定义为: int arr[] 或 int arr[0]
例:
char arr1[]=”a,b,c,d,e,f”; //有7个元素,有\0
(打印出 a b c d e f)
char arr2[]={‘a’, ‘b’ ,’c’, ‘d’, ‘e’ ,’f’ } // 有6个元素,没有\0;
(打印出随机值,没有\0)
char *p=”a,b,c,d,e,f”; //把首地址a的地址放入p;

一维数组在内存中存储:数组在内存中是连续存储的;

证明:

int main()
{
  int arr[10] = { 0 }; 
  int i = 0;  
  for (i = 0; i<sizeof(arr) / sizeof(arr[0]); ++i)   
  {
      printf("&arr[%d] = %p\n", i, &arr[i]);
  }   
     system("pause");               
    return 0;
}

这里写图片描述
观察输出的结果,我们可知随着数组下标的增长,元素的地址也在有规律的递增,
这里写图片描述

二维数组的定义与引用

定义一般形式:

类型说明符 数组名【常量表达式】【常量表达式】

引用:
数组名【下标】【下标】

二维数组的初始化:

(1)分行给二维数组赋初值;
例: int a[3][4]={{1,2,3,4},{5,6,7}.{9,10,11}};
int a[3][4]={{1,2},3,[4,5}}; 是不成立的;应改为:int a[3][4]={{1,2}{3}{4,5}};
(2)可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对个元素赋值;
(3)可以对部分元素赋初值,也可对某几行赋值;

(4)若对全部元素赋值,定义数组时可以对第一维的长度不指定,但第2 维的长度不可省;
二维数组在内存中也是连续存储的,如下图;
int main() 
{
    int arr[3][4];
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        int j = 0;
        for (j = 0; j < 4; j++)
        {
            printf("&arr[%d][%d] = %p\n", i, j, &arr[i][j]);
        }
    }
    system("pause");
    return 0;
}

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值