数组与指针

本文详细探讨了数组和指针的关系,包括数组名与指针的区别、数组地址的加法行为、指针定义与解引用操作,以及多维数组、指针数组和数组指针的概念。还介绍了数组作为参数传递时的处理方式,强调了地址值参与运算的单位是元素的存储大小。
摘要由CSDN通过智能技术生成
  1. 关于数组首地址问题
    定义一个char型数组char a[3] = {'1', '2', '3'};
    Q1:aa + 1&a&a+1有什么区别?
    A1:首先a,我们一般用数组名来表示这个数组的首地址,但其实这是不太准确的。a代表的实际山是数组首元素首地址,而real的数组首地址是用&a来表示的。虽然他们两个的值相同,但意义是不一样的,不一样在哪里呢?下个问题解答。
    Q2:那么aa+1有什么区别?&a&a+1有什么区别?a+1又和&a+1有什么区别?
    A2:第一个问题讲过a&a的区别。那么在对数组地址进行加法时:
    对于a来说,它是越过了1个数组元素所占地址空间,比如a他是char型数组,则每个元素占1个字节,所以a+1是跳跃了1个字节,即a+1 等价于&a[0] + 1*sizeof(a[0]);(这里,a&a[0]是等价的)。
    对于&a来说,你对他+1,是让他跨越了整个数组的地址空间,到达最后一个数组元素的下一个地址。(无奈啊,谁让他代表的是整个数组地址呢╮(╯▽╰)╭)。所以&a+1等价于&a + 1 * sizeof(a)。下面看个实操吧,好理解一些:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值