• 《高质量程序设计指南》C++题目


       今天晚上下了本《高质量程序设计指南》,据说那几个题目 20个硕士里面,得50分以上的还没有超过一半。如果能得满分,

    林锐博士拜你为师。我就很感兴趣的去做了一下,发现都很基本。我这个半路出家的人,居然也能做个80分。给了自己很大的信心,同时,

    也觉得很多问题,还是平时很爱犯的错误。今天把我的错误贴出来和大家分享。

        1. bool flag, float t 和 指针 char *p 如何 和 0 值进行比较。

         bool :我的答案是 if (flag == 0) 0 分,标准答案 应该是 if (flag)。

         float: 我的是 :

        float t = 0.0;
        if (fabs(t) <= FLT_MIN) {
            printf("Zero Value");
        }

        只是我的答案,貌似要包含两个头文件。他的标准答案是这样的:

        const float delt = 0.00001

        if (x >= -delt && x <= delt) 

        只是这里, FLT_MIN 是不是限制的太强了,但是选择delt 的大小是个难题。

       char *p 的比较方法是 if (p == NULL)  这个和标准答案一样。

       只是,在老版本的编译器上,NULL 不能保证转换成指针.

        这个题目,想了下,给自己 6分吧。

        2. sizeof 计算下面的值。这个题目我全对(默认是win32 的机器).

     

        char str[] = "Hello"; 这个是数组的初始化。sizeof 数组,就是这个数组占用的空间。

        sizeof(str) = 6;

        char *p = str;

        sizeof(p) = 4; 在32 位机器上,这个是4. 指针的大小,一般是一个word 的大小。

        int n = 10;

        sizeof(n) = 4;  一般也是一个 word 的大小

        void func(char P[100]) {sizeof(p) =  4}  数组默认是传地址的,所以,这个函数实际上传过来的是数组的头指针,而且是一个拷贝。

        这个拷贝是一个普通的指针。是普通指针的大小。

        void *p = malloc(100); sizeof (p) = 4 p 是普通指针,而非数组指针。所以是普通指针的大小。一个cpu 字。

      

       做到这里,给我的感觉是,题目虽然简单,但是,也涉及C 的基本原理。

       今天太迟了,要睡觉了。下次再续,把后面的题目再贴上来,给大家分享。

  • 相关阅读:
    git clone time out
    Window版本的nvm下载安装以及配置
    jdk安装目录查询
    idea 快捷键
    faac简介、编译、使用
    socket编程实例TCP
    jsoncpp简介、下载、编译、使用
    时间时区概念及常用时间函数
    开启博客之旅
    找回了用户名和密码
  • 原文地址:https://www.cnblogs.com/niniwzw/p/1628007.html
Copyright © 2020-2023  润新知