首页 > 试题广场 >

某程序的主函数如下图所示,该程序的打印结果是()

[单选题]
某程序的主函数如下图所示,该程序的打印结果是()
int main(void){
    char name[] = "Tom";
    char *ptr;

    ptr = name + strlen(name);

    while(--ptr >= name)
        puts(ptr);

    return 0;
}
  • m
    om
    Tom
  • //空行
    m
    om
    Tom
  • //空行
    Tom
    om
    m
  • Tom
    om
    m
ptr=name数组的首地址+3,假设首地址为1000,ptr=1003,
第一次循环:ptr=1002,指向的是数组中第3个元素m
第二次循环,ptr=1001,指向的是o
第三次循环,ptr=1000,重新回到了首地址1000,指向t
发表于 2022-01-08 16:24:24 回复(3)
Yad头像 Yad
puts输出字符串时要遇到'\0’,也就是字符结束符才停止
发表于 2022-02-10 12:21:50 回复(2)
....
发表于 2022-01-06 17:30:31 回复(0)
strlen不会计算/0sizeof会计算,ptr是数组首元素的地址
发表于 2022-03-22 14:31:47 回复(0)
还是没看懂
发表于 2023-09-21 15:22:02 回复(1)
ptr+strlen(name);strlen(name)返回值为3,ptr+3所指向的内存位置为: "T" "o""m" " " Tom后面的" " ,--ptr指向的则是"m" 
发表于 2023-03-26 21:59:06 回复(0)
这题c加加
发表于 2022-09-09 10:10:08 回复(0)
--ptr >= name 其中 --ptr我理解,可是 >= name是什么意思?
发表于 2022-05-19 11:05:33 回复(1)
共10位 9位子串2个 2位子串9个 重复1个 故8个 3位子串8个 1位子串6个 2+~+9-1+6=50
发表于 2022-04-12 15:49:05 回复(0)
选JavaScript咋会出现这道题呢?
发表于 2022-03-01 15:06:13 回复(1)