找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2687|回复: 1
打印 上一主题 下一主题
收起左侧

数组的数组与字符串指针数组

[复制链接]
跳转到指定楼层
楼主
ID:70976 发表于 2014-12-25 16:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
数组的数组
char [4][6] —— 数组的数组
在编译器的符号表中,a的地址为9980
运行时步骤1:取i的值,把它的长度调整为一行的宽度(这里是6),然后加到9980上。
运行时步骤2:取j的值,把它的长度调整为一个元素的宽度(这里是1),然后加到前面所得出的结果上。
运行时步骤3:从地址(9980+i*scale-factor1+j*scale-factor2)中取出内容。

字符串指针数组
char *p[4] —— 一个字符串指针数组
在编译器的符号表中,p的地址为4624
运行时步骤1:取i的值,乘以指针的宽度(4个字节),并把结果加到4624。
运行时步骤2:从地址(4624+4*i)取出内容,为“5081”。
运行时步骤3:取j的值,乘以元素的宽度(这里是1个字节),并把结果加到5081。
运行时步骤4:从地址(5081+j*1)取出内容。

数组和指针参数是如何被编译器修改的
            实     参                            所匹配的形式参数
数组的数组          char c[8][10];         char (*)[10];       数组指针
指针数组            char *c[15];           char **c;           指针的指针
数组指针(行指针)    char (*c)[64];         char (*c)[64];      不改变
指针的指针          char **c;              char **c;           不改变

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:337139 发表于 2020-9-30 17:43 | 只看该作者
这理其实理解了指针地址和地址的指针就可以很好的理解它的指向含义了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表