const与指针的使用

 
  • 问题描述:
            C#中的readonly和static以及const的比较和对比分析
  • 问题解决:
  const使用
如上例我们可以得出如下结论:
  • (1)typedef  定义一个类型的别名(为一个类型取一个新名字),而#define只是简单的字符串替换
例如
            typedef char * Ptr;
            #define Def char *  (注意这里没有分号的结束符)
            Ptr  s1,s2;
            Def s3,s4;
上述定义的s1和s2是char *类型,对Def进行字符串替换也就是char *s3,s4;也就是说s3是一个char 指针,s4是一个char类型变量
  • (2)由上面的程序我们可以看出对于*、++是出于同一优先级,但是++放在变量的左边和右边,具体的优先级不一样,具体而言:左边的++ > * >右边的++
  • (3)交换const与变量类型的位置意思是一样的
如上所示const char * 和char const *含义是一样的!
 
  • (4)const限定的谁是常变量
上述指出了三种被const修饰的变量的值
(4.1)指向常量的指针
        const char * value
            -----指针的值可以改变,但是指针指向的值不允许改变
(4.2)常指针
        char *const value;
            ------指针的值不允许改变,但是指针指向的变量的值允许改变
(4.3)指向常量的常指针
    const char *const  variable;
        -------指针的值不允许改变,指针指向的变量的值也不允许改变   
总结:
            一个简单的判断方法:指针运算符*,是从右到左,那么如:char const * pContent,可以理解为char const (* pContent),即* pContent为const,而pContent则是可变的
            const在*的左边,则指针指向的变量的值不可变;在*的右边,则指针的指向不可变。简记为“左定值,右定向”。
原文地址:https://www.cnblogs.com/luosongchao/p/3044834.html