找回密码
 立即注册
搜索
热搜: 活动 通知
查看: 77|回复: 0

检测点8-16

[复制链接]

620

主题

336

回帖

1057

积分

管理员

积分
1057
发表于 2026-3-7 19:44:20 | 显示全部楼层 |阅读模式
检测点8-16

1.请用类型名指出对象pc和表达式& a的类型,然后说明它们为什么是兼容的。
答:对象pc的类型是 char (*) []
表达式& a的类型是char (*) [6]
由于char []和char [6]是兼容的,所以指向这两种类型的指针也是兼容的。

2.用类型名写出表达式& "Goodbye Mr Hollywood"的类型。
答:char (*) [21]

3.如果不允许使用条件表达式,则c0819.c中的main函数如何改写?
参考答案:
int main (void)
{
    char a [] = "grass";


    if (cmp_str (& a, & "tree")) puts ("Same.");
    else puts ("Different.");


    char (* pc) [] = & a;
    if (cmp_str (pc, & "grass")) puts ("Same.");
    else puts ("Different.");
}

4.如下所示,我们想改写cmp_str函数,使用数组下标来比较两个字符串,而不是先前的指针操作。对象m和n的值在程序中用作数组下标,请将这个函数补充完整。
bool fstrcmp (char (* para) [], char (* parb) [])
{
    int m = 0, n = 0;

    while (______________________________________)
        if (______________________________________) return 0;

    return ________________________;
答案:
bool cmp_str (char (* para) [], char (* parb) [])
{
    int m = 0, n = 0;


    while ((* para) [m] != '\0' && (* parb) [n] != '\0')
        if ((* para) [m ++] != (* parb) [n ++]) return 0;


    return (* para) [m] == (* parb) [n];
}

5.5.在本节最后给出了一个新版的cmp_str函数,为了使用这个新版的函数,我们应当如何修改源文件c0819.c里的main函数呢?请给出代码。
参考答案:
int main (void)
{
    char a [] = "grass";
    puts (cmp_str (a, "tree") ? "Same." : "Different.");


    char (* pc) [] = & a;
    puts (cmp_str (* pc, "grass") ? "Same." : "Different.");
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|鼠侠网 ( 吉ICP备19001332号 )

GMT+8, 2026-3-30 16:13 , Processed in 0.228578 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表