about const

const char *const chPoint代表它是一个常量数据的常量指针,访问权最低。这样的指针总是指向相同的内存地址,在这个内存地址里的数据不能用指针修改。

char *const chPoint 表示非常量数据的常量指针,这样的指针总是指向相同的内存地址,并且该地址的数据可以通过指针修改。

const char *chPoint 表示常量数据的非常量指针,指针被修改后可以指向任何适当类型的数据项,但是被指向的数据不能通过指针进行修改。

下面再详细分析

const char *const * keywords ;

const char *const  keywords;

const char const * keywords;

const char const keywords;

 

#include <iostream>
using namespace std;
const char *const * keywords ;
int main(void)
{
    const char *const * keywords;
    const char * p = "Hello world!\n";
    char *q ="Helle C++\n";   //这里写成char *p也没问题.
    keywords = &p;
    cout << p << *keywords;    
    keywords = &q;
    cout <<q<<*keywords;    
    /*以上两个输出都正常,说明keywords这个指针指向的地址可以改变.
    若写成*keywords = p 或 *keywords都不行
    楼上有很多说keywords指向的地址是常量地址,即keywords是常量指针,应该有些问题.
    这段代码可以解释keywords应该说是一个指向常量数据的非常量二级指针.
    可能有些啰嗦,总之,keywords指向的地址可以改变,但是指向的是常量数据,即它指向的地址中的数据是不能被改变的.
    */
    return 0;
}
 

关于 const char *const  keywords:

 

#include <iostream>
using namespace std;
int main(void)
{
   
    const char * p = "Hello world!\n";
    const char *q ="Helle C++\n";   //这里写成char *p也没问题. 
    const char *const  keywords=p;  
    /*这句话代表它是一个常量数据的常量指针,访问权最低。这样的指针总是指向相同的内存地址,在这个内存地址里的数据不能用指针修改
        而且在声明时必须要同时进行初始化.
        下面如果出现 keywords = q 很明显也是错的了
        
    */
    keywords = p;
    cout << p << *keywords;  
    return 0;
}

 

关于const char const * keywords;和 const char const keywords;

#include <iostream>
using namespace std;
int main(void)
{
    const char const * keywords;  
    /*二个const可以随便去掉一个, 和const char *keywords(char const *keywords)一个效果
    表示指向常量数据的非常量指针
    */
    //还有const char const keywords; 和const char const *keywords 一样,有一个const是多余的.
    //写成const char key或者 char const key都可以
    char const key = '2';
    char *p = "Hello world!\n";       
    const char *q ="Helle C++\n";    
    
    keywords = p;        
    //*keywords = 's'; //error,不能修改数据即使指向的是非const型的数据
    cout << p << keywords;  
    keywords = q;
    cout << q <<keywords;
    return 0;
}

 

 

posted @ 2009-12-03 12:30  zedzhao  阅读(162)  评论(0编辑  收藏  举报