数组的数组 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; 不改变
|