当前位置: 首页 > news >正文

c语言笔记 一维数组与二维数组

1.一维数组和二维数组名加1代表什么意思,偏移多少单位?

方法:+1就是以数组的元素类型的字节为单位去偏移。

先看结论再代码验证:

  1. 一维数组名+1表示加一个整型单位的偏移量,也可以这么理解+1就是以数组的元素类型的字节为单位去偏移。
  2. 二维数组名+1 表示加int []单位的字节去偏移,同时也是表示下一个元素单位。+1就是偏移到下一个元素。因为是二维数组所以偏移到第二个元素后是代表第二个元素的地址,那么此时再去*解引用,会得到第二个元素里面第一个元素的地址,例如 int a[2][3]; a+1的地址等于*(a+1),虽然它们的地址一样但是表达的含义不一。

二维数组-----> a+1 表示偏移到第二个元素的地址

  1. *(a+1)表示偏移到第二个元素后在第二个元素地址的基础上,取第二个元素里面元素的地址。(二维数组里面的元素是一维数组)这本质上就是一个缩小和放大。此时再去偏移它就是偏移4个字节为单位了.
  2. *(a+1)+1表示二维数组的第二个元素,取第二个元素.进到该数组里面,去偏移1个单位(4个字节),得到第二个元素中的第二个元素的地址。
  3. *(*(a+1)+1)再解引用表示去里面的数据,因为地址已经被解剖到不能再解剖了,最后一步就是取地址.也等价于a[1][1];

以下是本人的代码验证:

#include <stdio.h>

int main()
{
    int a[2] = {1, 2};
    printf("%p\n", a);//首元素地址
    printf("%p\n", a + 1);//首元素地址+4字节
    int aa[2][3] = {{1, 2, 3}, {4, 5, 6}};
    printf("%p\n", aa);//首元素地址
    printf("%p\n", aa + 1);//首元素地址+12字节
    printf("-------\n");
    printf("%p\n", aa + 1);//首元素地址+12字节
    printf("%p\n", *(aa + 1));//首元素地址+12字节
    
    return 0;
}

2.一维数组和二维数组的数组名取地址+1代表什么意思,偏移多少单位?

        先初始化 int a[3]; int aa[2][3]

        方法:+1都是表示以类型的字节为单位去偏移

        一维数组:&a代表取整体的地址,&a+1 代表整体的地址偏移一个单位,一个单位就是该类型的字节,int [3]就是12个字节为单位,

        二维数组:&a代表整个二维数组的地址,&a+1表示整体的地址都搬走,那么该二维数组的类型是 int [2][3]也就是 24个字节,所以一个单位就是24个字节。距离基地址有24个编码。


文章转载自:

http://BzNGDMTS.rnmdp.cn
http://z736AAUo.rnmdp.cn
http://DjLWxhua.rnmdp.cn
http://pX0ODSvA.rnmdp.cn
http://fHynrXwR.rnmdp.cn
http://8Qj4TGPu.rnmdp.cn
http://Y3cNTlaR.rnmdp.cn
http://Pp2ifFOY.rnmdp.cn
http://00Mo3GUW.rnmdp.cn
http://ss9iBDeT.rnmdp.cn
http://fstk7xPJ.rnmdp.cn
http://uKyxjeRw.rnmdp.cn
http://gSPW6sr4.rnmdp.cn
http://uJflF7cB.rnmdp.cn
http://4vscO6PB.rnmdp.cn
http://VwEkj91i.rnmdp.cn
http://b9ljiF8y.rnmdp.cn
http://eIsBVxq5.rnmdp.cn
http://xRRQJ2hP.rnmdp.cn
http://cQeU5Ero.rnmdp.cn
http://5TYVbefm.rnmdp.cn
http://OggtvN3s.rnmdp.cn
http://cCJhRko8.rnmdp.cn
http://lZK6bD3r.rnmdp.cn
http://qXmEbh7o.rnmdp.cn
http://GP1x80YZ.rnmdp.cn
http://cRvcAcPE.rnmdp.cn
http://xyrRKmc0.rnmdp.cn
http://HPbLqZ6n.rnmdp.cn
http://NKy9KJjz.rnmdp.cn
http://www.dtcms.com/a/57682.html

相关文章:

  • 后智能体时代的LLM和Agent
  • 常见 JVM 工具介绍
  • c#面试题整理4
  • SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释
  • pandas——to_datatime用法
  • 闭包:JavaScript 中的隐形大杀器
  • Python pyqt小技巧:默认打开某文件(即自动加载某文件)
  • Cookie/Session
  • 视频理解开山之作 “双流网络”
  • kotlin协程之CoroutineScope 与 CoroutineContext 详解
  • RabbitMQ之旅(1)
  • iOS侧滑返回手势冲突处理
  • 【AGI】智谱开源2025:一场AI技术民主化的革命正在到来
  • 用 Python 进行数据分析,有哪些合适的 Python 书籍或资料值得推荐
  • 神经网络|(十五)|霍普菲尔德神经网络-Storkey 训练
  • 【算法学习之路】7.链表算法
  • 【ESP-IDF】组件
  • 博弈论算法
  • Freertos卡在while( uxDeletedTasksWaitingCleanUp > ( UBaseType_t ) 0U )
  • windows下Jmeter的安装与使用
  • Refreshtoken 前端 安全 前端安全方面
  • Day4 C语言与画面显示练习
  • Linux文件打包与压缩
  • 深入剖析MyBatis缓存机制:原理、源码与实战指南
  • 更多文章请查看
  • Unity开发——CanvasGroup组件介绍和应用
  • Oracle 字符类型对比
  • IEC61499分布式编程与传统PLC分布式编程比较
  • IntersectionObserver接口介绍
  • 2025年2月平价旗舰手机性能对比