首页 理论教育 将二维字符数组视为字符串,实战技巧

将二维字符数组视为字符串,实战技巧

时间:2023-10-23 理论教育 版权反馈
【摘要】:如果你只想将数组的内容打印为字符串,那么可以进一步简化程序。拆下两个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数据类型并显示左值,以验证此结论是否正确。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈