面试题18:关键字const的含义是什么


    const int a; int const a; const int*a; int*const a; int const*a const;

    答:

    前两个的作用是一样,a是一个常整型数。第3个意味着a是一个指向常整型数的指针,也就是整型数是不可修改的,但指针可以修改。第4个意思是a为一个指向整型数的常指针,也就是指针指向的整型数是可以修改的,但指针是不可修改的。第5个意味着a是一个指向常整型数的常指针,也就是指针指向的整型数是不可修改的,同时指针也是不可修改的。

    注意

    如果应试者能正确回答以上这些问题,那么他就给测试人员留下了一个好印象。另外,即使不用关键字const,也还是能很容易写出功能正确的程序,那么为什么还要如此看重关键字const呢?有如下3个理由。

    (1)关键字const的作用是为给读代码的人传达非常有用的信息,实际上,声明一个参数为常量是为了告诉用户这个参数的应用目的。如果你曾花很多时间清理过他人在编程中留下的垃圾,就能体会这点多余的文字的意义(当然,懂得应用const的程序员很少会留下垃圾让别人来清理的)。

    (2)通过给优化器一些附加的信息,使用关键字const也许能产生更紧凑的代码。

    (3)合理地使用关键字const可以使编译器自然地保护那些不希望被改变的参数,防止其被无意的代码修改。简而言之,这样可以减少错误的出现。