数组相关介绍

1.一维数组初始化

    (1) int arr[10]={1,2};将数组的第1个元素赋值为1,第二个赋值为2,其余元素全部赋值为0。

    (2)int arr[ ]={1,2,3,4,5};依据赋值的元素个数可以指定数组的长度。

这里简单介绍一下字符数组的初始化

     char arr[ ]="abc",计算数组的长度有两种方法

   (1)size=sizeof(arr);结果为4。

    (2)size=strlen(arr);结果为3。这是因为前者计算数组长度时算上了“\0”,而后者则没有算上。

2.一维数组的指针

    因为数组在内存中是连续存储的,所以常常应用指针去对数组进行编程。

   int *p=arr;其中arr代表数组的首地址,p存放的即为数组的首地址。因此在编程中arr[i]==*(p+i),即为数组的第i号元素。在这里简单介绍一个易错的小例题。

    char arr1[ ]="abc",       char arr2="abc"

    char *p1="abc",           char *p2="abc"   

这里arr1等于arr2吗??p1等于p2吗??

   其实,p1==p2是正确的,这是因为“abc”是字符常量,p1,p2都是存放的字符a的首地址,所以两者相等,但是&p1!=&p2,而arr1和arr2虽然存放的元素是相同的,但是这里的arr1,arr2代表的是数组的首地址,两者是不相等的。

简单画图解释一下:


3.二维数组初始化

  (1) int arr[3][4]={{1,2,3},{4,5}}可以将想要赋值的元素位置赋上值,而其余位置为0。

(2)  Int arr[ ][4]={1,2,3,4,5,6,7,8}可以将行数省略,行数即为8/4==2,但是列数却不可以省略。这和二维数组的内存存储方式有关,有兴趣的同学可以查找一下相关资料。

4.二维数组的指针

  一维数组的指针为 int *p=arr;那么二维数组是否也是这样呢??事实上,二维数组的指针应为 int *p=arr[0][0];若是按照一维数组定义,实际上arr是数组指针,即为int(*)[4];在这里,给大家对比一下一维数组和二维数组:

  (1)“首元素”只能针对于一维数组

   (2)二维数组的元素个数其实就是行数,这是因为二维数组中一个元素就为一行,所以二维元素的首地址应为一行一维数组的地址,再根据一维数组,即为第一行第一例的元素就代表了二维元素的地址。

5.数组越界

   在这里简单提一下,举个例子

     int i=0,arr[10];

   for(i=0;i<20;i++)

{

printf("hehe\n");

}

   此循环即为死循环,由此可见,数组越界有时候会出现死循环的程序结果,所以在以后编程时要注意数组的元素不能大于你所定义的数组长度。

以上仅供参考,互相学习,多多包涵!!!



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值