【摘要】:如果你只想将数组的内容打印为字符串,那么可以进一步简化程序。拆下两个for循环,并将其替换为以下单个循环:如果编译并运行此修改的程序后,仅显示一周中的几天。当你意识到起始字节的位置时,程序的操作就变得清晰了。对于字符数组,标量为1,因此偏移量始终为10。这就是为什么用来显示字符串的左值总是比前一个地址大10。
如果你只想将数组的内容打印为字符串,那么可以进一步简化程序。拆下两个for循环,并将其替换为以下单个循环:
如果编译并运行此修改的程序后,仅显示一周中的几天。
这是怎么回事呢?当你意识到(图9-4中的左值)起始字节的位置时,程序的操作就变得清晰了。也就是说,days[0][0]在“星期日”中标记“S”:
days[0][0]="Sunday";//lvalue=258
days[1][0]="Monday"//lvalue=268
days[2][0]="Tuesday";//lvalue=278
//more elements...
因此,每次变量i递增1,编译器都会向数组名(258)的基索引添加一个偏移量,该偏移量等于数组的第二个元素大小(即10)乘以其标量大小。对于字符数组,标量为1,因此偏移量始终为10。这就是为什么用来显示字符串的左值总是比前一个地址大10。
如果数组定义为:(www.xing528.com)
float myData[5][10];
i的每个增量的标量是多少:
因为浮点的标量是4,所以i上的每个增量都会使左值地址前进40:
40=sizeof(float)*second element size
40=4*10
40=40
作为练习,你可以更改清单9-3中的代码以使用float数据类型并显示左值,以验证此结论是否正确。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。