我所理解的数组

数组
一:一维数组
1 . 数组的创建
数组顾名思义是含有相同元素的集合,(类似我们高中数学所学习的集合)。
例如

int arr[10];
char arr1[2];
float arr2[3];
double arr3[5];

注意:切记 [ ]这个中要给常量,不能使用变量。
2 .数组的初始化
初始化是指:在数组的创建同时并赋予合理的初始值。
有如下的几种赋值类型:

int arr[10]={1,2,3,4,5,6,7,8];
int arr[ ]={1,2,3,4};
char arr[ ]={'a',23,'b'};
char arr[ ]="abcdef";\\(切记这个数组是有7个元素,a b c d e f  \0)

在引号内建立的数组是以\0结束的。
char *p=”abcdef”;将字符串赋值给指针变量,其赋值的是字符串第一位的地址。
3 .一维数组的使用
如果想要表示数组中的某个元素,可以用arr[0],arr[1]表示。其中[ ]李是元素的下标,其表示方法是0~元素个数-1。
代码如下:

#include <stdion.h> 
int main()
{
   int arr[10]={0};
   int i = 0;
   for(i=0; i<10; i++)
   {
      arr[i]=i;\\对数组的赋值
   }
   for(i=0; i<10; i++)
   {
      printf("%d ",arr{i});\\打印一个数组
   }
   return 0;
}

其中为了代码有很好的可移植性我们可以将上诉代码
for(i=0; i<10; i++)
换为
int sz = sizeof(arr)/sizeof(arr[0]);
将10替换成sz,这样这个代码的可移植性大大增强。
4 .一维数组在内存的存储形式
(因为我对这个博客不太熟悉,所以把代码的运行结果不会上传)

#include <stdion.h>
int main()
{
   int arr[10]={0}int i = 0;
   for(i=0; i<10; i++)
   {
      printf("&arr[%d]=%p\n",i,&arr[i]);
   }
   return 0;
}

在这个代码的运行结果,我们可以看出来,数组在内存的存储方式是连续的。
5.指针访问

#include <stdion.h>
int main()
{
   int arr[10]={0}int i = 0;
   for(i=0; i<10; i++)
   {
      printf("%p\n",arr);
      printf("%p\n",*arr);
   }
   return 0;
}

由上面的的俩组地址可以得到,数组的数组名其实是数组首元素的地址。
二:二维数组
1 .二维数组的创建

int arr[3][4];
char arr[3][5];
double arr[2][4];

2 .二维数组的初始化

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

3 .二维数组的使用

#include <stdion.h>
int main()
{
   int arr[3][5]={0};
   int i = 0;
   for(i=0; i<3; i++)
   {
      int j = 0;
      for(j=0; j<5; j++)
      {
         arr[3][5]=i*5+j;
      }
   }
    for(i=0; i<3; i++)
   {
      for(j=0; j<5; j++)
      {
         printf("%d ",arr[i][j]);
      }
   }
   return 0;
}

4 .二维数组在内存的存储

#include <stdion.h>
int main()
{
   int arr[3][5]={0};
   int i = 0;
    for(i=0; i<3; i++)
   {
      int j = 0;
      for(j=0; j<5; j++)
      {
         printf("&arr[%d][%d]=%p\n",i,j,&arr[i][j]);
      }
   }
   return 0;
}

类似一维数组的使用。由结果可知二维数组在内存中也是连续存放的。
以上就是我理解的数组,类似一维,二维。还有三维…等等。
总之,有数组就得学会指针。这将会是非常重要的!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值