C语言之数组(秒懂自学)

一维数组


1.格式:  eg:  int arr[3]={1,2,3,4};
            输入一个名为arr的数组,[3]代表arr数组中的第三个元素,=后面代表arr数组中所拥有的数组元素。
                      

2.数组指针   int int*arr[]     表示什么呢
                                                   int为整型,那顾名思义arr数组中的元素都为整形  
                              举一反三   float.......类型也是一样(数字类型组成)

***命名规则:一定要是由合法的标识符组成
      
3.概念:尤*数字组成*的以单纯的排序结构排列的结构单一的数组。
                              
4.一维数组的长度eg:  int a[3]                 中只有a[0],a[1],a[2]   用[]里面的下标数来表示第几个元素
                                                   如果超过定义的数组下标元素是可以引用的,系统不作检查

一、 对数组地址的理解首先需要明确以下几个概念:

以一维数组 array[3] = {0, 1, 2} 为例。
1、数组的首元素地址

    &array[0]    (&为取地址符)

2、数组的地址

    &array

3、数组名 array 代表数组首元素的地址

    即 array  与  &array[0] 等价

4、步长的概念

    例如:执行 &array + 1,对于这个数组来说存有3个int型的数,每个int型占据4个字节即这个数组占据12个         字节,执行 + 1 即跨过12个字节,所以对这个数组来说它的步长就位12.

        执行 &array[0] + 1, 因为数组中存放的是int类型,所以它的步长就位4.
二、   区分重点举例eg:
int main()
{
   int arr[]={9,8,7,6,5,4,3,2,1,0};
  printf("%p\n",&arr[0]);//打印数组的首地址
  printf("%p\n",arr);//打印数组的首地址
  printf("%p\n",&arr);//打印数组的地址
    return 0;
}
每个数组都对应一个地址,而数组中的每个元素也分别对应一个地址,而这些地址是不可改变的和具有一定的随机性,一旦输入就被系统随机存放。而一个数组内的元素之间的地址是有一定的地址规律存放的。
   

对于数组取地址可以相对应的赋值     eg:arr[]={1,2,3,4,5}
                    int(*P)[5]=&arr;
                    我们可以对其相应的计算得到相同的地址。 

数组与指针的关系这是很多人所模糊的

*还没学指针的,可以不看下面这两张图
63036811d34b4d63ab9e377af0052fae.png

d204f6ff23e444d282fa3ac7537bfa50.png

二维数组


1.     基本eg:  int a[2][3];   表示的是a数组中的第二行第三列
  *对应:    类型说明符  数组名a [行数][列数]

2.     自我理解:一般不能将二维数组作为一个整体进行输入、输出、和运算
而只能针对二维数组的元素进行操作。

例如:int a[2][3];
      a[1][2]=20;     a[1][2]是a[2][3]数组中的一个数组元素,所以可以输出。
          如果输入int a[2][3]=30  ,这就是很明显的错误,因为数组a中没有a[2][3]这个元素。原因呢?
   如下       

3.     eg:int a[2][3] 中包含了6个int类型的数组元素:a[0][0]   a[0][1]   a[0][2]
                          a[1][0]  a[1][1]   a[1][2]

4.二维数组相对于一维数组,可以保存图片 图形。
  一维数组只能保存数字,字符等等一维上的东西


5.我相信三维数组与更多维数组也与以上类似
 

 

  • 22
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Insecure Fluoxetine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值