数组的基本知识总结

1. 数组的概念

数组:数组就是一组相同元素的集合。
数组可以分为一维数组,二维数组,多维数组等。
数组可以存放多个或一个元素,但是数组元素个数不能为0;

2. ⼀维数组的创建和初始化

2.1一维数组的创建

int arr[4];//表示数组arr存放了4个int类型的数据

arr为数组名,int [4]是数组类型,4表示元素个数,元素个数需要用[]方括号括起来。

2.2一维数组的初始化

int arr1[5] = {1 ,2,3,4,5} ; //完全初始化
char arr2[3] = {0};//不完全初始化

2.3数组下标
  数组下标是从0开始的,也就是说,int arr1[0]代表arr数组下标为0的元素,也是数组arr的第一个元素。

3. ⼀维数组的使用

3.1一维数组的输入
  一维数组的输入可以采用循环的方式。
例如:

char arr[5]  = { 0};
int i =0 ;
for(i = 0; i < 5 ;i++)//有几个元素,循环几次
{
  scanf("%c",&arr[ i ]);
}

3.2一维数组的输出

char arr[5]  = { 0};
int i =0 ;
for(i = 0; i < 5 ;i++)//有几个元素,循环几次
{
 printf("%d ",arr[i]);
}

4. ⼀维数组在内存中的存储

  一维数组在内存中是连续存放的,默认是由低地址到高地址。
例如·:

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

在内存中的存储方式如图:
在这里插入图片描述

int main()
{
int arr[4] = { 1,2,3,4};
int i = 0;
for(i = 0;i < 4;i++)
 {
    printf("%p\n",&arr[i]);
 }
return 0; 
}

在这里插入图片描述
注意:这里的地址是16进制的

5. sizeof计算数组元素个数

sizeof操作符是可以用来计算数组元素的个数

int arr[5] = {1,2,3,4,5);
int sz = sizeof(arr) / sizeof(arr[0]);

sizeof(arr)计算的是arr数组的大小,单位是字节,sizeof(arr[0])计算的是一个数组元素的大小,因此,sizeof(arr) / sizeof(arr[0]);可以计算出元素个数。

6. ⼆维数组的创建

二维数组的创建跟二维数组有相似之处
例如:

type arr_name[常量值1][常量值2];
例如:
int arr[2][3];
char arr1[4][5];

type代表的是数组类型。
arr_name代表的是二维数组的名字。
常量值1代表的是数组有多少行。
常量值2代表的是数组每行有多少个元素。

7. ⼆维数组的初始化

二维数组的初始化与一维数组也有相似之处,二维数组的行下标是从0开始的,列下标也是从0开始的
例如:

int arr1[2][3] = {1,2,3,4,5,6};//完全初始化
char arr2[3][4] = { 1,2};//不完全初始化

为了更的观察,二维数组的初始化也可以在大括号里使用大括号,代表每一行的元素。
例如:

int arr1[3][2] = {{1,2},{3,4},{5,6}};//完全初始化
int arr2[3][4] = {{1,2},{3,4},{5,6}};//不完全初始化

{1,2}表示第一行有两个元素1,2;{3,4}表示第二行有两个元素3,4;{5,6}表示第三行有两个元素。
在内存中的存储方式如图:
完全初始化
在这里插入图片描述
不完全初始化,没有进行初始化的,默认值是0
在这里插入图片描述

注意:二维数组中行可以省略,但是列不可以省略。
例如:

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

8. ⼆维数组的使用

8.1二维数组的输入

char arr[3][4] = { 0 };
int i = 0;
int j = 0;
fo r(i = 0; i< 3;i++)//代表第几行
 {
   for( j = 0; j < 4;j++)代表每一行的元素
    {
      scanf("%c",&arr[i][j]);
    }
 }

8.2二维数组的输出

char arr[3][4] = { 0 };
int i = 0;
int j = 0;
fo r(i = 0; i< 3;i++)//代表第几行
 {
   for( j = 0; j < 4;j++)代表每一行的元素
    {
     printf(”%d ",arr[i][j]);
    }
 }

9. ⼆维数组在内存中的存储

二维数组在内存中是连续存放的,地址是由低地址到高地址

char arr[3][4] = { 0 };
int i = 0;
int j = 0;
for(i = 0; i< 3;i++)//代表第几行
 {
   for( j = 0; j < 4;j++)代表每一行的元素
    {
     printf("%p \n",&arr[i][j]);
    }
 }

在这里插入图片描述

10. C99中的变⻓数组

type arr_name[常量值]中的常量值可以是变量,但是数组大小一旦确定,就无法改变。
例如:

int n = 0;
scanf("%d",&n);
int arr[n] = { 0 };
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值