标题: 数组的数组与字符串指针数组 [打印本页]

作者: daniu    时间: 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;           不改变


作者: 长风007    时间: 2020-9-30 17:43
这理其实理解了指针地址和地址的指针就可以很好的理解它的指向含义了。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1