关于数组的一点点理解

本文详细解释了C语言中数组和指针的概念,强调了数组名本质上是指针,以及在处理数组时如何根据顺序和运算顺序访问元素。重点讨论了不同情况下地址的大小和解引用操作的影响。
摘要由CSDN通过智能技术生成

说到数组,基本上就离不开指针,数组只不过是一堆按照顺序依次排放的同样属性的数据,这样规律排放的数据就可以用指针轻易找到;

注意,这里要注意好几个关键点

1 :按照顺序

2:依靠指针访问

3:同样的类型

数组的数组名其实就是指针,数组就是根据指针来访问数组内部的数据的;

那么,就看看今天我看到的这个问题

首先,我们来看到第一条

如果AI没有胡言乱语的话,咱们的答案就是16,这是数组的大小。因为这里我们是把数组名放进去了。

那么,再来看第二个

这里就需要注意运算的顺序了,首先我们要计算a+0,但是,a+0到底是什么?

首先,a是什么?a在里面表示的是数组首元素的地址,毕竟a[i]==*(a+i)对不对,所以这个输出的是4,也就是数组首元素的地址!

注意是地址!这个地址的大小要看电脑的!不同的环境下面的大小不一样,32位的环境下面指针的大小是4B,但是64位机器是8B

再来,我们看第三个

这个很简单,首先,这个a是数组首元素的地址,那么*a当然就是a[0],所以还是4

第四个

和上面一样,地址加一就等于&a[1],这边输出的还是4,地址的大小;

第五个

这个更简单了,把一个int型放进去当然是4了(也要看环境)

第六个

这里是这样的,这里非常关键:&a到底是什么意思?

这里就提到什么叫数组指针;

 int arr[5] = {1, 2, 3, 4, 5}; // 定义一个包含5个整数的数组
    int (*p)[5] = &arr; // 定义一个指向该数组的指针

数组指针就是说,有一个指针,它直接指向整个数组,注意,是指针指向整个数组,

于是乎,&a就是取出来整个数组的地址,但是,地址就是地址,管你指向谁,所以还是4

第七个

首先,其实我们看,对一个东西先取地址再解引用不就等于什么都没做吗?所以这里当然输出16

第八个

这里首先是取出整个数组的地址,然后加一,也就是跳转了整个数组。但是!!!这里没有解引用 啊,所以还是地址,所以,还是输出4

第七个

这里是对一个整型变量取地址当然也是输出4

最后

你看,先取地址再加一,还是地址,所以还是4

另外,还有一个小问题

这是多少??

这里,我们取整个数组的地址,然后加一,然后问题来了,这个地址所指向的大小是多少???

很简单

int 指针加一跳转4

char 指针加一跳 1

数组指针跳整个数组的大小,由于依然是一个数组指针,计算机会以为后面也是个数组,所以对这个地址解引用就会得到一个新的数组(当然,这妥妥的非法访问),所以,输出16

具体的内容可以参考这里

http://【C语言编程2023C语言零基础视频教程C语言入门初学者小白C语言考研C语言专升本C语言期末考试不挂科C语言程序设计C语言期末突击C语言视频教程谭浩强)】https://www.bilibili.com/video/BV1cq4y1U7sg?p=124&vd_source=1034ead19d48e54bdb8391d00ca39ee1

个人认为这课程的质量不说是最好的,但最起码是最适合普通人的。

  • 9
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值