《高质量程序设计指南》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 的基本原理。

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

posted @ 2009-12-19 23:43  暮夏  阅读(799)  评论(4编辑  收藏  举报